---------------------
| ID | date |
|-----+-------------|
| 1 | 2013-12-30 |
| 2 | 2014-01-03 |
| 3 | 2014-02-02 |
---------------------
列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 |
--------------------------------------
它不会返回ID=1
行。
换句话说,>=GETDATE()
不会返回包含今天日期的行。
我做错了什么?
答案 0 :(得分:6)
它不会返回包含今天日期的任何行,因为GETDATE()
会提供日期和时间。因此,在您的示例中,将2013-12-30
转换为DATETIME
会为您提供2013-12-30 00:00:00
,其不等于或大于2013-12-30 12:09:35
(GETDATE()
的结果我在这一刻)。你需要使用:
WHERE date >= CONVERT(DATE,GETDATE())
答案 1 :(得分:1)
GETDATE()函数返回当前日期和时间(即包括时间部分)。 所以今天的日期(没有时间部分)小于GETDATE()是正常的(除非您在午夜精确地运行查询)。这就是为什么你没有得到预期的结果。