mysql - 因为我们在新的一年,MySQL 没有返回上个月的数据
问题描述
我有以下 SQL
SELECT * FROM TABLE_NAME where dateSold <= '01/01/2021' and dateSold > '12/01/2020' and cardId = 'BZPcJP3eXaJLT3J' and ImageAccepted = 'accepted' order by dateSold asc
这不会返回表中的任何内容,但有条目,请参见下图。
解决方案
将 varChar 用于 Date 并不是一个好习惯。
您可以在当前的 varChar 字段上运行以下命令。
SELECT * FROM TABLE_NAME where str_to_date(dateSold, '%m/%d/%Y') <= '01/01/2021'
AND str_to_date(dateSold, '%m/%d/%Y') > '12/01/2020'
AND cardId = 'BZPcJP3eXaJLT3J'
AND ImageAccepted = 'accepted'
ORDER BY date_format(str_to_date(dateSold, '%m/%d/%Y') ASC;
您可以通过创建一个默认为 NULL 的新“日期”字段将 varChar 数据转换为日期,并通过运行以下命令将数据从“dateSold”复制到新字段:
Update TABLE_NAME set dateNew = date(str_to_date(dateSol, '%m/%d/%Y'));
运行此命令后,从 Default 中删除 Null。
推荐阅读
- unity3d - 循环遍历一系列游戏对象,单击 c# 杀死前一个对象
- typescript - 如何在 Typescript 中继承静态泛型方法
- jboss - 如何在 Wildfly 10 上部署 Web 服务?
- javascript - 从选定的持续时间循环视频
- asp.net-mvc - IBM Watson Assistant:如何使用 ASP.NET SDK 获取和打印 JSON?
- windows - 如何获得独立于语言环境的 Windows 批处理日期戳?
- angular - 在父组件中使用没有 eventEmitter 的组件是否安全?
- python - 从巴士预订列表中提取重复行程
- c++ - 通过引用捕获并在插槽中使用的 Lambda
- php - 在 foreach 返回值之间添加分隔符