我想用时区作为字符串存储我的日期时间对象。为了确保它们的格式正确,我希望有一个正则表达式作为验证器。日期时间对象是如何存储在PostgreSQL中的:
'2004-10-19 10:23:54+02'
很清楚的解释。当然,时区部分是可选的,因此regex模式也需要说明这一点。现在,我这样做:
/^\d\d\d\d-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01]) (00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])*(:[0-9]*\+[0-9]*)?$/
我不确定这是完全正确的,特别是时区部分。这是否匹配可以存储在PostgreSQL数据库中的所有可能的时区?谢谢你的帮助。
编辑:我没有将它直接存储在PostgreSQL数据库中,所以我仍然需要正确地使用regex。
发布于 2018-11-04 19:29:40
如果将该值保留为字符串类型,则可以尝试substring()函数作为选项:
select substring(str_date,
'([0-9]{1,4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\+[0-9]{1,2})')
from tab;https://stackoverflow.com/questions/53144339
复制相似问题