sql语句中的日期格式

最近遇到一个小问题,在这里记录一下。

问题描述

有一条查询语句,大致如下:

1 select * from table where create_date = 2020-04-12 and status = 10 with ur

当使用数据库工具AQT进行查询时,可以正确查到数据。但通过远程SSH连接数据库进行查询时,却怎么都查不到。

原因分析

通过对条件进行分析(实际条件要比上例复杂),定位到大概率是日期格式问题。于是分别在AQT和SSH客户端执行以下语句:

1 select create_date from table where status = 10 with ur

果然,AQT的数据格式是这样的 YYYY-MM-DD ,而在SSH是这样的 MM/DD/YYYY 。 create_date 是DATE类型的数据列。

通过分析后了解到,常用的数据库工具一般在处理和展示日期类型的数据时,会自动进行格式转换,也算是帮用户封装具体细节,减少对数据列的细节的了解。

不过在这地方相当于好心办了坏事。修改查询语句如下:

1 select * from table where create_date = date(2020-04-12) and status = 10 with ur

通过在sql语句中先转换成日期格式,避免在不同环境下执行的效果不一样。

 

sql语句中的日期格式

上一篇:推荐一款免费的数据库可视化工具 robo 3t


下一篇:MySQL主键索引(聚簇索引)与非主键索引(二级索引)