> = GETDATE()没有返回具有今天日期的行

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)

IDint类型

dateDate类型

当我使用时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()不返回具有今天日期的行.

我做错了什么?

Lam*_*mak 6

它不会返回任何包含今天日期的行,因为GETDATE()它会提供日期和时间.所以,在你的例子中,转换2013-12-30为a DATETIME会给你2013-12-30 00:00:00,它不等于或大于2013-12-30 12:09:35(此时GETDATE()我的结果).你需要使用:

WHERE date >= CONVERT(DATE,GETDATE())