我正在实现regex来评估多个字段中的数据,目前需要mysql regex来评估时区格式(2018-04-02t10:13:00)我尝试过regex %Y-%m-%d T %H:%i:%s 但它不起作用。
%Y-%m-%d T %H:%i:%s
vsikbqxv1#
你写的不是正则表达式。正则表达式看起来像 ....-..-..T..:..:.. 以最简单的形式,或者 (\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d) 以一种更复杂的方式(只允许数字),有组让regex引擎提取组件。您可能需要的是mysql函数的格式 DATE_FORMAT() 以给定格式输入数据或以给定格式获取数据库的mout。唉,你没有告诉我们更多的细节,所以我只能指导你到相关的手册部分。
....-..-..T..:..:..
(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)
DATE_FORMAT()
chhkpiq42#
mysql> SELECT str_to_date('2018-04-02T10:13:00', '%Y-%m-%dT%H:%i:%s'); +---------------------------------------------------------+ | str_to_date('2018-04-02T10:13:00', '%Y-%m-%dT%H:%i:%s') | +---------------------------------------------------------+ | 2018-04-02 10:13:00 | +---------------------------------------------------------+ 1 row in set (0.01 sec)
但是。。。如果字符串以“-07:00”结束以指示时区,则会更混乱。看到了吗 CONVERT_TZ 还有一些额外的分析。
CONVERT_TZ
4nkexdtk3#
您可以使用以下选项:
'^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$'
然而,模式匹配并不保证日期是有效的,例如。 2018-02-29T00:00:00 (闰年)或 2018-04-31T00:00:00 (4月31天)。
2018-02-29T00:00:00
2018-04-31T00:00:00
3条答案
按热度按时间vsikbqxv1#
你写的不是正则表达式。正则表达式看起来像
....-..-..T..:..:..
以最简单的形式,或者(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)
以一种更复杂的方式(只允许数字),有组让regex引擎提取组件。您可能需要的是mysql函数的格式
DATE_FORMAT()
以给定格式输入数据或以给定格式获取数据库的mout。唉,你没有告诉我们更多的细节,所以我只能指导你到相关的手册部分。
chhkpiq42#
但是。。。如果字符串以“-07:00”结束以指示时区,则会更混乱。看到了吗
CONVERT_TZ
还有一些额外的分析。4nkexdtk3#
您可以使用以下选项:
然而,模式匹配并不保证日期是有效的,例如。
2018-02-29T00:00:00
(闰年)或2018-04-31T00:00:00
(4月31天)。