sql-server - 使用 SQL Server 比较日期

标签 sql-server tsql sql-server-2008 date

我有两个日期(日期时间):

日期1 = 2010-12-31 15:13:48.593
日期2 = 2010-12-31 00:00:00.000

这是同一天,只是时间不同。由于 date1 时间,使用 <= 比较 date1 和 date2 不起作用。所以 date1 <= date2 是错误的,但应该是正确的。我可以只看年、月、日来比较它们吗?这是 SQL Server 2008。

最佳答案

SELECT CASE WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) ...

应该做你需要的事情。

测试用例

WITH dates(date1, date2, date3, date4)
     AS (SELECT CAST('20101231 15:13:48.593' AS DATETIME),
                CAST('20101231 00:00:00.000' AS DATETIME),
                CAST('20101231 15:13:48.593' AS DATETIME),
                CAST('20101231 00:00:00.000' AS DATETIME))
SELECT CASE
         WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) THEN 'Y'
         ELSE 'N'
       END AS COMPARISON_WITH_CAST,
       CASE
         WHEN date3 <= date4 THEN 'Y'
         ELSE 'N'
       END AS COMPARISON_WITHOUT_CAST
FROM   dates 

返回

COMPARISON_WITH_CAST   |  COMPARISON_WITHOUT_CAST
Y                         N

关于sql-server - 使用 SQL Server 比较日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4794028/

相关文章:

c# - 无需安装 SQL Server 工具

sql触发器消失

sql - 定义范围以覆盖数字序列中的间隙 (T-SQL)

sql-server-2008 - TFS 2008 : Does it come with a license for SQL Server 2008?

sql - 检查索引碎片时 '(' 附近的语法不正确

.net - Entity Framework 4 中是否有不依赖存储过程的全文搜索有效解决方案?

sql-server - SQL Server 2012 消耗太多网络流量来获取所有数据

sql - 非规范化数据(也许是一个枢轴?)

sql - 解析带下划线的 SQL Server 数字文字

tsql - 如果表没有主键,则将列设置为主键