我有一个有两个列的表。
01/01/2015 00:00:00
我写了一个SQL语句,如下所示:
select *
from cc_open_incident_view
WHERE (DATE =(NOW() - INTERVAL 1 MONTH))
如果我执行此语句,它不会检索任何数据,我找不到错误
我只想查询上个月的数据(过去30天)。
非常感谢任何帮助..
根据OP评论进行编辑:
日期保存为日期并且有效,但我表格中的列日期已存储了未来5年的日期,并显示了如下数据:09.03.2016
(明天也是如此)。有没有办法只显示从30 days
回到today
的日期?
答案 0 :(得分:10)
编辑:根据OP
更改了查询select *
from cc_open_incident_view
WHERE date between (CURDATE() - INTERVAL 1 MONTH ) and CURDATE()
上一个答案:
如果日期保存为date
,请使用此
select *
from cc_open_incident_view
WHERE date >= (CURDATE() - INTERVAL 1 MONTH )
如果将日期保存为字符串,则使用此项(假设它位于dd/mm/yyyy ...
select *
from cc_open_incident_view
WHERE STR_TO_DATE(date ,''%d/%m/%y %h:%i:%s')>= (CURDATE() - INTERVAL 1 MONTH )
答案 1 :(得分:1)
CURDATE()
另请注意,DATE
仅返回日期的yourdatetimecolumn
部分,因此如果您将DATETIME
存储为NOW
且时间部分已填满,则此查询不会选择今天的记录。
在这种情况下,您需要使用SELECT *
FROM cc_open_incident_view
WHERE yourdatetimecolumn BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
代替:
graph_def = sess.graph.as_graph_def()
for node in graph_def.node:
print node
答案 2 :(得分:0)
如果数据类型是datetime或timestamp(并且您想检查时间):
SELECT *
FROM yourtable
WHERE yourdatetimeortimestampcolumn <= NOW() - INTERVAL 1 MONTH;
如果您的列数据类型是date:
SELECT *
FROM yourtable
WHERE yourdatecolumn <= CURRENT_DATE() - INTERVAL 1 MONTH;
如果您的列是字符串,则需要先执行以下操作转换它:
SELECT STR_TO_DATE('5/16/2011 20:14 PM', '%c/%e/%Y %H:%i');
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date
答案 3 :(得分:0)
select *
from cc_open_incident_view where DATE >= [strat date] and DATE <= [current date];