j_t*_*ion 0 sql sql-server getdate sql-server-2012
---------------------
| ID | date |
|-----+-------------|
| 1 | 2013-12-30 |
| 2 | 2014-01-03 |
| 3 | 2014-02-02 |
---------------------
Run Code Online (Sandbox Code Playgroud)
列ID
是int
类型
列date
是Date
类型
当我使用时SELECT CAST (getdate() as date) currentDay, ID FROM table WHERE date >= GETDATE()
,它只返回:
--------------------------------------
| currentDay | ID | date |
|---------------+------+-------------|
| 2013-12-30 | 2 | 2014-01-03 |
| 2013-12-30 | 3 | 2014-02-02 |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)
它没有返回行ID=1
.
换句话说,>=GETDATE()
不返回具有今天日期的行.
我做错了什么?
它不会返回任何包含今天日期的行,因为GETDATE()
它会提供日期和时间.所以,在你的例子中,转换2013-12-30
为a DATETIME
会给你2013-12-30 00:00:00
,它不等于或大于2013-12-30 12:09:35
(此时GETDATE()
我的结果).你需要使用:
WHERE date >= CONVERT(DATE,GETDATE())