2017-08-11 74 views
0

團隊,獲取SQL錯誤,而從動態表中刪除數據

我的SQL查詢是像下面我使用的SQL Server 2014.Here @abcTableName一段時間內可能存在一些時間可能不會。所以我們通過在數據庫中查詢可用的表獲得該表

DECLARE @dat datetime, @abcTableName varchar(127); 
set @m_lCleanUpAfterDays=30; 
set @dat = getdate() - @m_lCleanUpAfterDays; 
SET @tabledelete = 'DELETE TOP(1) FROM ' + @abcTableName+ ' WHERE EventTime < ' + @your_dt ; 
EXEC(@dynDelete); 

這裏EVENTTIME數據類型是唯一的日期時間,但還是我得到從字符串例外轉換日期和/或時間時轉換失敗。我也嘗試了@dat的轉換,但仍然得到相同的異常。請提前幫助,幫助我。

回答

0

在行:

SET @tabledelete = 'DELETE TOP(1) FROM ' + @abcTableName+ ' WHERE EventTime < ' + @your_dt; 

想必@your_dt是一個日期時間?如果是這樣,你將不得不將它轉換爲一個NVARCHAR來構建字符串,例如

SET @tabledelete = 'DELETE TOP(1) FROM ' + @abcTableName+ ' WHERE EventTime < ' + ''''+CONVERT(NVARCHAR(10), @your_dt, 103) +'''' ; 

選擇了你所需要的格式:http://www.sql-server-helper.com/tips/date-formats.aspx

+0

但這裏的時間格式。我想同時使用日期時間 – Andrues

+0

@Andrues編輯我的答案與日期格式的鏈接。您可以選擇正確的格式。 – Leonidas199x

+0

我試着用CONVERT(NVARCHAR(23),@your_dt,201),但是它在'10'錯誤附近給出錯誤的語法。這裏10是小時。在開始時間和給出錯誤時。 – Andrues