SQL选择where开始日期是今天的日期

5

我正在尝试编写一个查询,其中从句是当员工的入职日期是今天时。

select * from tbl_employees
where Startdate = getdate()

问题在于Startdate是'2014-12-09 00:00:00.000',而函数getdate返回的日期和时间为'2014-12-09 08:25:16.013'。
我该如何编写一个只考虑日期的查询?

你使用的是哪个版本的 SQL?MySQL?2008? - Kris Gruttemeyer
我正在使用微软 SQL 2008。 - user2296463
4个回答

10

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

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

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

1
你可以使用它来仅比较日期部分而不是时间,类似于。
IF CAST(DateField1 AS DATE) = CAST(DateField2 AS DATE)

或者

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

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/zh-cn/library/ms188751.aspx

因此,使用其中任何一个都将仅给出日期


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接