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'