如何在SQL Server中获取当前/今天的日期数据

20

如何编写查询以获取今天在SQL Server中的日期数据?

select * from tbl_name where date = <Todays_date>
5个回答

57

正确答案将取决于您的datecolumn的类型。假设它的类型为Date

select * from tbl_name 
where datecolumn = cast(getdate() as Date)

如果是 DateTime

select * from tbl_name 
where cast(datecolumn as Date) = cast(getdate() as Date)

请注意:在SQL Server中,对列进行`datediff()`(或其他计算)是不可搜索的,而将列转换为`Date`类型是可搜索的。

6

看起来 Mitch Wheat的回答并不是sargable,尽管我不确定这是否正确。

请注意:对于左侧进行的DATEDIFF()(或其他计算)不是Sargable,而将x转换为日期是。

SELECT * 
FROM tbl_name 
WHERE date >= cast(getdate() as date)
and date < cast(getdate()+1 as date)

实际上,SQL Server的较新版本(2K8+)似乎是“可转换为日期”的可搜索参数感知。我曾经认为这将排除索引的使用,但我进行了测试。 - Mitch Wheat
@MitchWheat 很高兴听到这个消息。我曾经有过疑虑并开始浏览。从我的链接中可以看出,它是去年写的。作者没有提到他使用的版本。 - t-clausen.dk
1
请注意:在LHS上执行datediff()(或其他计算)不是Sargable,而将x转换为日期类型则是。 - Mitch Wheat

4

-1

这对我有效。请检查一下。

SELECT * FROM tbl_name WHERE created_at = cast(Date(Now()) as Date);

-3
select * from tbl_name where date(column_name) = CURDATE();

现在您可以获取今天插入的行


2
嗨,Irshad。问题要求在SQL Server中提供解决方案。您发布的SQL语句无法在SQL Server上运行。 - TT.

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