mysql的date_format()函数格式月份的坑

这篇具有很好参考价值的文章主要介绍了mysql的date_format()函数格式月份的坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题背景

我表中有个字段存的是“年-月”格式的字符串,格式是这样的:‘2023-08’

在查询这个表数据时,我使用了如下sql语句: select * from car where date_format(car_start_month,'%Y-%m')<='2023-08'

意思是查询 car_start_month字段的年月字符串<=‘2023-08’的数据,但是死活查不出来结果

解决方案

查询语句改为:select * from car where car_start_month<='2023-08' 后就能查出需要的数据了

原因分析

因为我car_start_month字段的存的是‘2023-08’这样的字符串,而date_format()函数来转换这个字符串时会返回null,并不能正确的返回2023-08这样的结果。

date_format(字段名称,'时间格式')含税的2个参数,第一个参数的值必须是能够转为时间的格式,比如'2023-08-01'、'2023-08-01 12:01:45'这样的,如果不是能够转为时间的格式的内容,date_format会返回null,哪怕date_format的第二个参数设置的格式是’%Y-%m‘这种格式要求。而我这边这种'2023-08',它在转换时会自动给2023-08后面添加-00,从而变成了2023-08-00,而这种明显不是正确的时间格式,就导致转化后返回了null。这样最终导致我上面的查询语句失败了,得不到想要的结果。

总结

凡是要用date_format()来格式化的字段,该字段的值如果是字符串,必须最短是年-月-日,比如'2023-08-25'这样的;存时间也可以,比如'2023-08-25 12:05:49';该字段的值不能存年-月,比如'2023-08';更不能存年,比如’2023‘。

如果你的字段是存的’年-月‘字符串,又想和传入的查询条件比较大小,那么直接用<或>或=来比较就可以了文章来源地址https://www.toymoban.com/news/detail-697773.html

到了这里,关于mysql的date_format()函数格式月份的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL中使用DATE_FORMATE格式转换需要注意的问题

    【参考格式】 %Y:4位的年份 %y:2位的年份 %m:2位的月份 %d:2位的日期 %H:24小时制的小时 %h:12小时制的小时 %i:2位的分钟 %s:2位的秒钟 %W:星期的全名 %w:星期的缩写 %M:月份的全名 %b:月份的缩写 参考链接

    2024年02月07日
    浏览(42)
  • python中format格式化函数(全)

    格式化字符串的函数 str.format() 它增强了字符串格式化的功能。 通过用{} 和: 来代替 编程语言输出中的% 1.默认输出代码方式 输出hello world \\\" { } “输出{}内的内容以及” \\\"内的内容,空格也会跟着输出 2.指定位置的输出 输出hello,world 3.指定多个位置输出 输出world hello world 4.字

    2023年04月08日
    浏览(115)
  • 解决报错 java.lang.IllegalArgumentException: Cannot format given Object as a Date

    报错原因:我们在SimpleDateFormat.format转化时间格式的时候,传入的值无法转换成date而报的错 我的代码大概就是下面这种 发现SimpleDateFormat.format方法并不适用于LocalDate类型,不然就会报此错误; 这个错误的解决方法都是一样,先把时间转换成date类型,再去调用此方法进行格式

    2024年02月04日
    浏览(44)
  • python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印

    (格式化替换,替换,列表字典替换,类格式化, 魔法函数格式化,对齐及填充格式化,format对齐打印) 本篇目录内容: 📘  一、format() 函数的语法 📘  二、format() 函数基本用法 📘  三、用对齐及填充的方式格式化 📘  四、用format函数实现对齐打印 📘  五、其他内容待

    2024年02月07日
    浏览(85)
  • 【Java】Java 中格式化字符串:String.format() 方法

    本文仅供学习参考! 相关文章地址: https://www.cnblogs.com/Dhouse/p/7776780.html https://www.javatpoint.com/java-string-format https://www.geeksforgeeks.org/java-string-format-method-with-examples/ 前言 虽然 System.out.println() 适合调试和显示简单消息,但它不太适合格式化字符串。格式化字符串不仅显示字符串

    2024年02月11日
    浏览(65)
  • java中设置date数据的显示格式

    1.一般(默认格式):    格式:星期  月份  日期  时:分:秒  时区  年份      Thu   Aug   11  15:19:59   CST   2022 2.simpleDateFormat格式化date类:  格式:年份-月份-日期   时:分:秒      2022-08-11        15:25:00 simpleDateFormat的格式化正则: 3.DateFormat类对date数据

    2024年02月13日
    浏览(30)
  • Simple Date Format类到底为啥不是线程安全的?

    摘要: 我们就一起看下在高并发下Simple Date Format类为何会出现安全问题,以及如何解决Simple Date Format类的安全问题。 本文分享自华为云社区《【高并发】SimpleDateFormat类到底为啥不是线程安全的?》,作者:冰 河。 首先问下大家:你使用的Simple Date Format类还安全吗?为什么

    2024年02月07日
    浏览(42)
  • Java将中国标准时间字符串转换为Date格式

    当前方法作用,主要将标准时间格式如: 星期三 五月 01 22:25:49 CST 2023 输出按照指定格式内容 Data 和 String 以上内容可以根据 自己需要的格式进行更改

    2024年02月10日
    浏览(44)
  • 解决:Java后端返回给前端的Date格式数据相差8小时的问题

    问题描述: 后端得到的数据是对的,但是返回给前端后,数据比原数据慢了8小时。 原因: json数据在返回浏览器端是会被spring-boot默认的Jackson框架转换,而Jackson框架默认的时区GMT(相对于中国是少了8小时)。 解决: 在application.yml文件中,配置

    2024年04月16日
    浏览(64)
  • element-ui el-date-picker日期选择器 value-format问题

    通过原生js和moment.js分别获取 moment().format(\\\'YYYY-MM-DD HH:mm:ss\\\') 格式的时间 moment.js:文档 | Moment.js 中文网 (momentjs.cn)

    2024年02月12日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包