# MySQL 踩坑之 datetime 字段比较。

**URL:** <https://www.shiqidu.com/t/topic/809>\
**Category:** 开发调优\
**Tags:** MySQL\
**Created:** [2024 年3 月 13 日 13:56 UTC](https://www.shiqidu.com/t/topic/809 "2024-03-13T13:56:22Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![caojie](https://www.shiqidu.com/user_avatar/www.shiqidu.com/caojie/32/465_2.png) [@caojie](https://www.shiqidu.com/u/caojie)\
发布日期： [2024 年3 月 13 日 13:56 UTC](https://www.shiqidu.com/t/topic/809/1 "2024-03-13T13:56:22Z")

</div>

表 order 有字段 paidtime 类型为 datetime，现在要筛选2月份的订单，所以写了SQL 如下。

```sql
select id from order where paidtime >= '2024-02-01 00:00:00' and paidtime <= '2024-02-31 23:59:59'

```

本以为datetime 字段是按字符串的比较规则，最后发现表里明明有数据却无法查出结果。  
仔细想想MySQL server 层肯定是先把 datetime 字段转成了整形再比较，错误的日期会导致 MySQL 无法完成转换导致异常。
