Regex для часовых поясов в объектах SQL datetime - PullRequest
0 голосов
/ 04 ноября 2018

Я хочу хранить объекты даты и времени с часовыми поясами в виде строк. И чтобы они были в правильном формате, я хочу использовать регулярное выражение в качестве валидатора. Вот как объекты даты и времени хранятся в PostgreSQL:

'2004-10-19 10:23:54+02'

Довольно понятно. Конечно, часть часового пояса является необязательной, поэтому шаблон регулярного выражения также должен это учитывать. Прямо сейчас я делаю это так:

/^\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, поэтому мне все еще нужно правильно настроить регулярное выражение.

1 Ответ

0 голосов
/ 04 ноября 2018

Если вы храните эти значения как строковый тип, вы можете попробовать 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;

Rextester Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...