2015-10-14 214 views
3
DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date] 
     BETWEEN '2014-02-31' AND '2014-04-01' 

這是我寫的DELETE聲明。有一個錯誤說:SQL Server - 使用SQL在日期範圍內刪除行。日期轉換失敗

轉換日期和/或時間從字符串轉換失敗。

我知道我必須寫出正確的日期格式,但我不確定那是怎麼回事。

這個問題還沒有在其他地方回答,因爲我看到沒有指定日期格式(在我要求的上下文中)

+2

哪個RDBMS是這個呢?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –

+0

[基於日期從表中刪除]的可能的重複(http://stackoverflow.com/questions/804193/delete-from-a-table-based-on-date) –

+1

鑑於錯誤文本,我強烈懷疑這是[tag:sql-server],但是OP最好先確認一下。 –

回答

5

你寫二月31日...也許答案.....那日期不存在。

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date] 
BETWEEN '2014-02-28' AND '2014-04-01' 

對於轉換日期的總體思路:

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date] 
BETWEEN CONVERT(date,'2014.02.28',102) and CONVERT(date,'2014.04.01',102) 

在這裏你可以找到的CONVERT https://msdn.microsoft.com/en-us/library/ms187928.aspx

+0

哦! THanks Galma88。你是一個genuis。該日期不存在。 – ObserveDBA

+0

':) ehehehehehe – Galma88

+0

這實際上工作。謝謝。爲了將來的緣故,我如何指定日期格式 – ObserveDBA

2

第三個參數值的完整列表,我假設你使用SQL Server,嘗試這..

DELETE FROM BIZ 
    WHERE CONVERT(DATE,[Orgnl_Cmpltn_Date]) 
    BETWEEN CONVERT(DATE,'2014-02-28') AND CONVERT(DATE,'2014-04-01') 
1

用這個代替

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date] >= '2014-02-28' 
AND [Orgnl_Cmpltn_Date] <= '2014'04'01' 

我不知道這是否重要,但2月只有28或29天。

1

幾件事情

1)有沒有這樣的日期在2月31日這可能是一個問題。

2)如果你把你的日期範圍按以下格式,你可以有更多的運氣:

BETWEEN '20140228' AND '20140401' 

讓我知道你上車:-)

+0

這是一個很好的日期文字格式爲mssql,但不適用於其他dbms, –