SQL选择startdate是今天的日期

时间:2014-12-09 13:31:08

标签: sql sql-server sql-server-2008 tsql datetime

我正在尝试编写一个查询,其中该条款是员工的开始日期是今天的日期。

select * from tbl_employees
where Startdate = getdate()

问题是Startdate是2014-12-09 00:00:00.000' 功能getdate将返回日期和时间,例如' 2014-12-09 08:25:16.013'

如何编写仅考虑日期的查询?

4 个答案:

答案 0 :(得分:3)

您只需要日期部分。简单的方法是:

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))

答案 1 :(得分:2)

select * from tbl_employees 
where CONVERT(VARCHAR(10),Startdate,110) = CONVERT(VARCHAR(10),GETDATE(),110)

答案 2 :(得分:0)

你可以用来比较DATE部分而不是时间......比如

IF CAST(DateField1 AS DATE) = CAST(DateField2 AS DATE)

OR

CONVERT(VARCHAR(10), GETDATE(), 112)

答案 3 :(得分:0)

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

所以使用其中任何一个都只会给你一个日期