mysql - Mysql:STR_TO_DATE 转换后查询没有结果
问题描述
我有一个表,其中一列上有字符串,字符串的格式是 ISO 8601(带 TZ)。
当我尝试运行以下查询时:
select * from `orders` where STR_TO_DATE('last_ship_date', '%Y-%m-%dT%TZ') >= STR_TO_DATE('2020-06-27 21:13:14', '%Y-%m-%d %h:%i:%s')
我没有结果,即使我在:“last_ship_date”列中具有相同格式和范围的日期(6 月 27 日之后),例如:2020-08-09T06:59:59Z
我在这里想念什么?为什么我无法选择 STR_TO_DATE 转换后的行?
谢谢你。
解决方案
您的代码有两个问题:
(1) 列last_ship_date
用单引号括起来,因此它被视为字符串文字而不是列名
(2) 必须使用第二个日期的格式,%H
而不是%h
因为列中的小时是 24 小时格式。
所以改成这样:
select * from `orders`
where STR_TO_DATE(last_ship_date, '%Y-%m-%dT%TZ') >=
STR_TO_DATE('2020-06-27 21:13:14', '%Y-%m-%d %H:%i:%s')
但您也可以简化为:
select * from `orders`
where STR_TO_DATE(last_ship_date, '%Y-%m-%dT%TZ') >= '2020-06-27 21:13:14'
推荐阅读
- php - 使用 php Xero api 在 Xero 中添加附件
- laravel - 在 laravel 方法请求中搜索多个表
- github - 尽管 GPG 密钥 ID 匹配,但 GitHub 提交未验证
- xml - 指定表格(所有元素)的 XSD 应该完全填充还是根本不填充?
- javascript - 显示通知,然后在 5 秒后导航到其他页面
- flutter - 如何使用 DIO 设置颤振 POST 方法?
- python - 以正确的顺序错误地移除精灵组敌人
- javascript - 使用 IPFS 简单获取和显示 - CORS 问题
- android - buildozer Python kivy中的Android应用程序部署错误
- python - 带有 Django 的 Gunicorn 给出了静态文件的问题