如何在 SQL Server 2008 的 where 子句中仅比较日期并忽略时间
Posted
技术标签:
【中文标题】如何在 SQL Server 2008 的 where 子句中仅比较日期并忽略时间【英文标题】:How to compare with only dates and ignore time in where clause in SQL Server 2008 【发布时间】:2016-03-12 08:57:23 【问题描述】:我有一列 Expiry_Date
包含 table1
中的日期和时间值。
我正在使用 C# 从前端发送一个日期值。
如果 where 条件为真,我会编写查询以获取一些信息。
例如:在table1
中,Expiry_Date
的值为 2016-03-11 23:59:59.000
select USER_NAME, USER_EMAIL
from table1
where Expiry_Date = '2016-03-12';
执行此操作时,我没有得到任何结果。实际上该表有这个日期的数据,由于提供的日期中没有时间部分,它与Expiry_Date
不匹配。
所以请告诉我如何在不浪费前端时间的情况下做到这一点。
【问题讨论】:
看CAST(Expiry_Date AS DATE)
。它应该将您的 DateTime 转换为 Date。
Compare two DATETIME only by date not time in SQL Server 2008的可能重复
【参考方案1】:
不要在 where 子句的列上使用 cast() 或 convert()。它不会给你带来好的表现。改用这个
where Expiry_Date >= '2016-03-12'
and Expiry_Date < DATEADD(DAY, 1, '2016-03-12')
【讨论】:
【参考方案2】:您可以在 where 子句中将 Expiry_Date
转换为 Date
...
select USER_NAME, USER_EMAIL
from table1
where (CAST Expiry_Date AS DATE) = '2016-03-12';
这应该返回任何时间到期日期为“2016-03-12”的所有记录。
【讨论】:
【参考方案3】:这个回答你的问题:
Compare two DATETIME only by date not time in SQL Server 2008
对不起,我之前的回答提到了 mysql 而不是 SQL Server。
问候
【讨论】:
那是 MySQL。这是 MS SQL Server以上是关于如何在 SQL Server 2008 的 where 子句中仅比较日期并忽略时间的主要内容,如果未能解决你的问题,请参考以下文章
您如何使用 SQL Server CE 和 SQL Server 2008 Express?
如何在 SQL Server 2014 中从 SQL Server 2008 R2 恢复备份?
在sql server 2008中如何查询本日、本周和本月数据
如何使用 SQL Server Management Studio (2008) 在 SQL Server Compact Edition 中创建列