2017-01-27 194 views
2

我有一个包含三列ID,SETTLE_DATE_TIME,STATUS的表。我试图选择SETTLE_DATE_TIME昨天的数据,STATUS是'E'。在MySQL中选择昨天的日期

SELECT * 
    FROM rev_acq_edcbatch 
WHERE EDCBATCH_STATUS='E' 
    AND EDCBATCH_SETTLE_DATETIME = CURDATE() - INTERVAL 1 DAY; 

没有数据被检索,但我有一个解决的日期时间是2017-01-26 16:28:50.000和状态是E.

+0

什么是场SETTLE_DATE_TIME的确切类型?日期+时间?时间戳?仅限日期? – Redlab

+0

@Redlab时间戳 –

回答

0

试试这个,其中EDCBATCH_SETTLE_DATETIME有SQL的正确的日期时间格式。

"SELECT * FROM rev_acq_edcbatch WHERE DATE(EDCBATCH_SETTLE_DATETIME) = CURDATE() - 1" 
0

这应该工作数据。

SELECT * FROM rev_acq_edcbatch where EDCBATCH_STATUS='E' AND EDCBATCH_SETTLE_DATETIME = DATE_SUB(NOW(), INTERVAL 1 DAY) ; 
+0

没有工作..... –

2

使用SUBDATE功能与current_date

SELECT * 
FROM rev_acq_edcbatch 
WHERE EDCBATCH_STATUS='E' 
AND EDCBATCH_SETTLE_DATETIME = subdate(current_date, 1) 

使用SUBDATE功能与NOW()如果EDCBATCH_SETTLE_DATETIME是时间戳。

SELECT * 
FROM rev_acq_edcbatch 
WHERE EDCBATCH_STATUS='E' 
AND EDCBATCH_SETTLE_DATETIME = subdate(NOW(), 1) 
+0

没有工作..... –

+0

什么数据类型是'EDCBATCH_SETTLE_DATETIME' – Matt

+0

时间戳...... –

1

我认为这应该工作:

SELECT * FROM rev_acq_edcbatch where EDCBATCH_STATUS='E' AND DATE(EDCBATCH_SETTLE_DATETIME) = DATEADD(day, -1, convert(date, GETDATE())) 
+0

'您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,在第1行'GETDATE())'附近使用正确的语法 –