2013-08-23 9 views
0

В моей базе данных у нас есть столбец, содержащий данные в формате XML. И один из элементов XML имеют даты, выглядит следующим образом:Postgres - Удаление миллисекунд из timestamp text

<timestamp>2013-05-22 16:01:26.78 CDT</timestamp> 
<timestamp>2013-05-15 10:29:44.588 CDT</timestamp> 
<timestamp>2013-02-27 09:37:54.677 CST</timestamp> 

Я извлек значение между <timestamp> с помощью:

substring(table.column from '<timestamp>(.*)</timestamp>') as "Time Stamp" 

Но я с трудом пытаюсь использовать регулярные выражения удалите только миллисекунды.

То, что я хочу 2013-02-27 09:37:54 CST

Я не знаю, достаточно регулярных выражений, чтобы отфильтровать миллисекунды.

ответ

0

не только с помощью:

/<timestamp>[^\.]*.([^\s]*)\s.*<\/timestamp>/ 

это сделать? это рубиново-регулярное выражение, кстати.

Что вы хотите "< \ метка времени>", "любые не период символы", " " "любой неустановлен", "пространство", "что-нибудь"," </время>"

с выбранным «любым не-пробелом». (in parens in ruby)

Надеюсь, что это поможет. Не знаю, сколько регексов меняется. некоторые вроде ruby ​​и perl идентичны. Примечание. Я избежал некоторых символов - SO не нравится тег метки времени.

1

Использование существующего запроса, можно привести результат (обратите внимание на TIMESTAMPTZ(0)):

SELECT substring(col1,'<timestamp>(.*)</timestamp>')::TIMESTAMPTZ(0) as "Time Stamp" 
FROM ... 
+0

Спасибо, но это не сработало. Я пробовал TIMESTAMPTZ, и он не будет включать часовой пояс CDT/CST. Он только преобразовал метку времени в мой текущий часовой пояс. Например, 2013-05-22 16: 01: 26.78 CDT становится 2013-05-22 14: 01: 26.78 CDT после того, как я его бросил. – cYn

+0

Э? Это то, что делает TIMESTAMPTZ - он использует вашу текущую настройку «часовой пояс» для отображения. Был ли ваш вопрос, что вы * только * хотели миллисекунды? Или вы хотите, чтобы TIMESTAMP отображался в * только * CDT/CST tz данных в таблице? – bma

+0

О, мужик, мне так жаль! Я неправильно написал свой вопрос. Я имел в виду, что мне нужно удалить миллисекунды. – cYn

Смежные вопросы