如何使用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
日期時間格式。
如何使用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
日期時間格式。
你可以做到這一點通過轉換日期時間價值是這樣的:
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'
此工作正常,與其他答案相比,它很容易在C#應用程序中使用。謝謝。 – jirinovo 2014-09-04 14:15:17
使用轉換
@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
請嘗試以下方法。這允許使用order_date
上的任何索引,如果您使用CAST
或CONVERT
order_date
MSSQL將無法使用您的索引。
SELECT * FROM orders WHERE order_date >= '20140510' and order_date < '20140511'
您需要在此情況下將order_date轉換爲日期,以便它將忽略時間值。 CAST(order_date as date)='20140510' – 2014-09-04 13:51:53