mysql如何用正则表达式判断一个字符串是否是日期?

时间:2023-01-07 08:49:22
求大神解答解答。网上找半天找不到个正确的
小弟在此感谢各位

5 个解决方案

#1



你的要求是什么,比如什么样子的字符串算是 日期呢,大概的格式是怎样的,是否包含时分秒,这个你要确定下来

#2


补充下:日期是不包含时分秒的
比如说2012-01-02就是日期,2012-02-30就不是。也没必要严格要求闰年啥的了

#3


这个用正则会非常复杂。毕竟 20xx-02-29是不是日期就非常难。
建议直接用日期转换函数测试一下,如果正常转换就是日期,反之不是。

#4


引用 2 楼 yanshi_wang 的回复:
补充下:日期是不包含时分秒的
比如说2012-01-02就是日期,2012-02-30就不是。也没必要严格要求闰年啥的了


你看看这个里面有例子,不过好像很复杂。。。

验证日期正则表达式
http://my.oschina.net/u/1398304/blog/279441

#5


直接这么写就好了
SELECT DATE_FORMAT(dtstr, '%Y-%m-%d') AS dt  FROM tbl

字符串如果能转成日期的,就是OK的,会有值, 不能转成日期的, 查询的结果就是 null 了

#1



你的要求是什么,比如什么样子的字符串算是 日期呢,大概的格式是怎样的,是否包含时分秒,这个你要确定下来

#2


补充下:日期是不包含时分秒的
比如说2012-01-02就是日期,2012-02-30就不是。也没必要严格要求闰年啥的了

#3


这个用正则会非常复杂。毕竟 20xx-02-29是不是日期就非常难。
建议直接用日期转换函数测试一下,如果正常转换就是日期,反之不是。

#4


引用 2 楼 yanshi_wang 的回复:
补充下:日期是不包含时分秒的
比如说2012-01-02就是日期,2012-02-30就不是。也没必要严格要求闰年啥的了


你看看这个里面有例子,不过好像很复杂。。。

验证日期正则表达式
http://my.oschina.net/u/1398304/blog/279441

#5


直接这么写就好了
SELECT DATE_FORMAT(dtstr, '%Y-%m-%d') AS dt  FROM tbl

字符串如果能转成日期的,就是OK的,会有值, 不能转成日期的, 查询的结果就是 null 了