Mysql 日期比较中的问题
Issue In Mysql Date Comparison
我有一个 table 有一个像这样的 datetime
列:
---------------------
| date_time_column |
---------------------
| 2020-09-14 14:00:13 |
| 2020-05-18 14:00:13 |
| 2021-12-14 14:00:13 |
---------------------
当我提出这些查询时
select * from `table`
where TIMESTAMP('date_time_column') < '2020-12-14 10:20:04'
但结果是没有
您正在将 文字字符串 'date_time_column'
转换为时间戳,而不是实际的列。由于这个字符串显然不是有效的时间戳,您会得到一个 null
结果,它会过滤掉所有行。
select timestamp('date_time_column') as res
| res |
| :--- |
| null |
您想要反引号而不是单引号,如:
select *
from `table`
where timestamp(`date_time_column`) < '2020-12-14 10:20:04'
不引用标识符也足够了:
where timestamp(date_time_column) < '2020-12-14 10:20:04'
最重要的是,时间戳转换没有任何好处,而且会减慢查询速度。直接过滤即可:
where date_time_column < '2020-12-14 10:20:04'
我有一个 table 有一个像这样的 datetime
列:
---------------------
| date_time_column |
---------------------
| 2020-09-14 14:00:13 |
| 2020-05-18 14:00:13 |
| 2021-12-14 14:00:13 |
---------------------
当我提出这些查询时
select * from `table`
where TIMESTAMP('date_time_column') < '2020-12-14 10:20:04'
但结果是没有
您正在将 文字字符串 'date_time_column'
转换为时间戳,而不是实际的列。由于这个字符串显然不是有效的时间戳,您会得到一个 null
结果,它会过滤掉所有行。
select timestamp('date_time_column') as res
| res | | :--- | | null |
您想要反引号而不是单引号,如:
select *
from `table`
where timestamp(`date_time_column`) < '2020-12-14 10:20:04'
不引用标识符也足够了:
where timestamp(date_time_column) < '2020-12-14 10:20:04'
最重要的是,时间戳转换没有任何好处,而且会减慢查询速度。直接过滤即可:
where date_time_column < '2020-12-14 10:20:04'