【发布时间】:2016-10-26 21:45:28
【问题描述】:
我有一张这样的桌子:
**dNum | dType | dCode | dChar**
1 | blah | foo | xxxx
1 | blah | foo2 | 10/11/2016
2 | blah | foo | xxxx
2 | blah | foo2 | 10/19/2016
...等等。
对于每个唯一的 dNum,我需要找出 dCode 何时等于“foo2”,然后 dChar 何时 恰好 15 天前。我的问题是从 15 天前获取日期。我目前的代码如下:
SELECT dNum
,dChar
FROM thing.table boo
WHERE dCode = 'foo2' AND
DAYS(CURRENT_DATE) - DAYS(DATE(dChar)) = 15
当我尝试运行此查询时,我收到以下错误:“日期、时间或时间戳字符串中的值无效。”然而,我更困惑的是,当我将DAYS(CURRENT_DATE) - DAYS(DATE(dChar)) 作为字段放在 SELECT 语句中而不是 WHERE 子句中时,它工作得很好。以下代码对我有用:
SELECT dNum
,dChar
,DAYS(CURRENT_DATE) - DAYS(DATE(dChar)) AS TEST1
FROM thing.table boo
WHERE dCode = 'foo2'
dChar 是一个 CHAR(25) 变量,并非所有值都是日期,但同样,当我的代码不在 WHERE 子句中时,这似乎不会影响任何事情。
谁能帮我弄清楚这里发生了什么?
【问题讨论】: