使用Sql检索DateTime对象的问题

Dra*_*aco 0 sql sql-server

鉴于日期,2009/04/30,我希望在其中一行中检索所有日期<= 2009/04/30和> = 2009/04/30.sql语句是这样的:

select dateColumn from someTable where dateColumn <= '2009/4/30'

select dateColumn from someTable where dateColumn >= '2009/4/30'
Run Code Online (Sandbox Code Playgroud)

上面的两个语句运行但第一个语句返回2009/04/30以下的所有日期,它似乎排除日期,即使它出现在数据库中.知道为什么会这样吗?我如何比较sql中DateTime对象的日期部分?

Qua*_*noi 5

SQL Server 存储日期和时间.

select dateColumn from someTable where dateColumn <= '2009/4/30'
Run Code Online (Sandbox Code Playgroud)

返回小于或等于的所有日期2009/4/30 00:00:00.

如果您的日期至少1/300大于秒,例如2009/4/30 00:00:00.003,它将不会被退回.

你需要选择这样的:

select dateColumn from someTable where dateColumn < '2009/5/01'
Run Code Online (Sandbox Code Playgroud)

或者像这样:

select dateColumn from someTable where dateColumn < DATEADD(day, 1, '2009/4/30')
Run Code Online (Sandbox Code Playgroud)