我有一个Mysql表,用于该表上的日志文件,有一个名为'log_date'的字段,它以下列格式存储日期(%Y-%m-%d%H:%i 。%s)。在数据库中,日期看起来像2013-20-05 00:00.00。让我们说今天的日期是2013-20-05我有从2013-01-01到现在的日志文件。如果我运行这样的查询:
SELECT * FROM log_table
WHERE STR_TO_DATE(log_date, '%Y-%m-%d %H:%i.%s') < '2013-05-05 00:00.00'
这将返回数据库中的每一行,包括大于2013-05-05 00:00.00
的行如果我反转&lt; (少于)到a&gt; (大于),查询如下:
SELECT * FROM log_table
WHERE STR_TO_DATE(log_date, '%Y-%m-%d %H:%i.%s') > '2013-05-05 00:00.00'
然后它返回ZERO行。我认为时间戳是造成我之前使用日期格式而不是DateTime格式的问题的原因。为什么会这样?
答案 0 :(得分:23)
log_date应该是DateTime数据类型。使用MySQL DATE函数要简单得多。一些例子
SELECT * FROM log_table
WHERE DATE(log_date) < '2013-05-05'
SELECT * FROM log_table
WHERE DATE(log_date) > '2013-05-05'
SELECT * FROM log_table
WHERE DATE(log_date) BETWEEN '2013-04-05' AND '2013-05-05'
SELECT * FROM log_table
WHERE DATE(log_date) BETWEEN DATE(CURRENT_DATE() - INTERVAL 2 WEEK) AND
DATE(CURRENT_DATE() + INTERVAL 4 DAY)
答案 1 :(得分:0)
你可以试试......
WHERE DATE_FORMAT(AUCTION_DATE, '%Y%m%d') >= DATE_FORMAT('2013/5/18', '%Y%m%d')
您也可以使用 now()功能获取今天的日期。