2014-09-04 33 views
0

如何使用WHERE子句中的yyyyMMdd日期格式是否需要過濾行,其中是yyyy-MM-dd hh:mm:ss.mmm datetime格式?MS SQL - yyyyDDmm WHERE子句中的日期格式

例如:SELECT * FROM orders WHERE order_date = '20140510'

順便說一句,這個例子適用於行,其中是yyyy-MM-dd 00:00:00.000日期時間格式。

+0

您需要在此情況下將order_date轉換爲日期,以便它將忽略時間值。 CAST(order_date as date)='20140510' – 2014-09-04 13:51:53

回答

1

你可以做到這一點通過轉換日期時間價值是這樣的:

declare @date datetime 
set @date = '2014-09-04 15:52:00.000' 
print CONVERT(VARCHAR(20), @date, 112) 

你會得到這樣的控制檯輸出:

20140904 

所以在您的情況,你可以做這樣的:

SELECT * FROM orders WHERE CONVERT(VARCHAR(20), order_date, 112) = '20140510' 
+0

此工作正常,與其他答案相比,它很容易在C#應用程序中使用。謝謝。 – jirinovo 2014-09-04 14:15:17

0

使用轉換

@date = '20140510' 
    SELECT * FROM orders WHERE order_date = CONVERT(date, CONVERT(varchar(8),@date), 126) 
For more info http://msdn.microsoft.com/en-IN/library/ms187928.aspx 
0

請嘗試以下方法。這允許使用order_date上的任何索引,如果您使用CASTCONVERTorder_date MSSQL將無法使用您的索引。

SELECT * FROM orders WHERE order_date >= '20140510' and order_date < '20140511'