Mysql选择datetime,大于timestamp

时间:2015-01-04 23:46:00

标签: mysql datetime unix-timestamp

我正在尝试向我的SELECT添加WHERE子句以从我的表中获取日期表格中的日期时间大于传递的时间戳。

SELECT * FROM record WHERE UNIX_TIMESTAMP(REPLACE(date_value, 'T', '')) >= 1388552400;

以下是数据样本

+--------+------------------------------+
| id     | date_value                   |
+--------+------------------------------+
| 344380 | 2014-12-01T00:00:00          |
| 344381 | 2014-12-23T00:00:00          |
| 344382 | 2014-12-16T00:00:00          |
| 344383 | 2014-12-24T00:00:00          |
| 344384 | 2014-12-17T00:00:00          | 
+--------+------------------------------+

我已经尝试了一些东西,但我要么得到一个空集,要么警告不正确的日期时间。

1 个答案:

答案 0 :(得分:3)

您需要将T中的date_values替换为空格' '而不是空字符串''

因此,以下查询应按预期工作:

SELECT * FROM record WHERE UNIX_TIMESTAMP(REPLACE(date_value, 'T', ' ')) >= 1388552400;

要调试原始查询,我运行了以下内容:

SELECT id, UNIX_TIMESTAMP(REPLACE(date_value, 'T', '')) FROM record;

返回所有0的时间戳。

然后我跟着:

SELECT id, REPLACE(date_value, 'T', '') FROM record;

我能够在你的date_value中看到丢失的空格。

http://sqlfiddle.com/#!2/a184f/6