mysql - 在where子句MySQL中转换日期
问题描述
我希望在 where 子句中将日期从 'd/m/Y' 转换为 'Y/m/d',如下所示:
SELECT * FROM myTable WHERE DATE_FORMAT(myDate,'%Y/%m/%d') = '2020/08/01'
此查询始终返回空结果
有没有办法做到这一点?
谢谢你。
解决方案
只需将数据转换为日期,然后对其进行格式化
SELECT * FROM myTable WHERE DATE_FORMAT(STR_TO_DATE(myDate,'%d/%m/%Y'),'%Y/%m/%d') = '2020/08/01'
或者将它们都设置为日期,然后您可以使用日期功能
SELECT * FROM myTable WHERE STR_TO_DATE(myDate,'%d/%m/%Y') = STR_TO_DATE('2020/08/01','%Y/%m/%d')
最好的方法是将日期保存为日期/日期时间/时间戳,这样您就可以毫无问题地使用它们进行计算,并且您始终可以将它们转换为任何输出
推荐阅读
- github - 伙计们,github存储库中的“.yaml”文件和“.bat”文件在哪里?
- java - Spring OAuth2 - 如何使用我生成的调用 Web 服务的 JWT 令牌保护 Spring Boot REST API?
- sql-server - 返回 SQL 查询中的确切天数
- c++ - 我的求解(字符串 a,字符串 b)的输出与随机散列中的预期输出不匹配
- android - 更改设备方向后如何返回到 Android 列表视图中的相同滚动位置?
- c++ - 在命令行上启动服务器与在应用程序内启动服务器
- html - Safari iOS13 - webkit-overflow-scrolling 不再用于禁用动量滚动
- node.js - 无法使用 mongoose 连接到 mongoDB 客户端
- node.js - Nodejs 服务器 (AWS) 中的 ERR_HTTP_HEADERS_SENT
- ruby-on-rails - 在活动邮件 smtp 设置中使用 `:plain` 与 `:login` 有什么区别?