我正在尝试向我的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 |
+--------+------------------------------+
我已经尝试了一些东西,但我要么得到一个空集,要么警告不正确的日期时间。
答案 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中看到丢失的空格。