我想寫一個查詢,其中的條款是當員工的開始日期是今天的日期。SQL選擇where startdate是今天的日期
select * from tbl_employees
where Startdate = getdate()
的問題是,開始日期是「2014年12月9日00:00:00.000」 和功能getdate
與日期和時間,如「2014年12月9日08回來:25:16.013 '
我該如何編寫一個只考慮日期的查詢?
我想寫一個查詢,其中的條款是當員工的開始日期是今天的日期。SQL選擇where startdate是今天的日期
select * from tbl_employees
where Startdate = getdate()
的問題是,開始日期是「2014年12月9日00:00:00.000」 和功能getdate
與日期和時間,如「2014年12月9日08回來:25:16.013 '
我該如何編寫一個只考慮日期的查詢?
你只想要日期部分。簡單的方法是:
select *
from tbl_employees
where cast(Startdate as date) = cast(getdate() as date);
但是,如果要使用索引,最好不要在函數調用中使用列。所以,這是更好的:
where (StartDate >= cast(getdate() as date) and StartDate < cast(getdate() + 1 as date))
select * from tbl_employees
where CONVERT(VARCHAR(10),Startdate,110) = CONVERT(VARCHAR(10),GETDATE(),110)
您可以使用只比較日期部分不time..some東西一樣
IF CAST(DateField1 AS DATE) = CAST(DateField2 AS DATE)
OR
CONVERT(VARCHAR(10), GETDATE(), 112)
SELECT CONVERT (date, SYSDATETIME())
,CONVERT (date, SYSDATETIMEOFFSET())
,CONVERT (date, SYSUTCDATETIME())
,CONVERT (date, CURRENT_TIMESTAMP)
,CONVERT (date, GETDATE())
,CONVERT (date, GETUTCDATE());
/* Returned
SYSDATETIME() 2007-05-03
SYSDATETIMEOFFSET()2007-05-03
SYSUTCDATETIME() 2007-05-04
CURRENT_TIMESTAMP 2007-05-03
GETDATE() 2007-05-03
GETUTCDATE() 2007-05-04
*/
從:http://msdn.microsoft.com/en-us/library/ms188751.aspx
所以使用這些中的任何一個都會給你日期
你使用的是什麼版本的SQL? MySQL的? 2008年? – 2014-12-09 13:32:25
我正在使用mircosoft sql 2008 – user2296463 2014-12-09 13:33:14
可能的重複[如何僅返回日期部分從SQL Server日期時間數據類型](http://stackoverflow.com/questions/113045/how-to-return-the-date-part - 只從 - 一個-SQL服務器的日期時間,數據類型) – BenR 2014-12-09 13:55:27