Как округлить значение миллисекунды из отметки времени (0) в PostgreSQL? - PullRequest
2 голосов
/ 05 марта 2019

Мне нужно округлить значение в миллисекундах от timestamp(0) without time zone.

Например: 2018-04-19 10: 43: 13. 719 до 2018-04-19 10: 43: 13. 000

Ответы [ 2 ]

3 голосов
/ 05 марта 2019

Вы можете использовать функцию date_trunc :

SELECT date_trunc('seconds', '2018-04-19 10:43:13.719'::timestamp);

2 голосов
/ 05 марта 2019

Ничто из этого не применимо к timestamp(0), как вы предложили, так как этот тип не хранит миллисекунды с самого начала.Имеет смысл для буквального ввода или timestamp (без модификатора точности).

Округление метка времени '2018-04-19 10:43:13.719' даст вам '2018-04-19 10:43:14' (округлено up ).

До усекать микросекунд, вы можете использовать date_trunc () , как Лоренц уже предоставил.Согласно вашему комментарию, вы все еще хотите лишний свисающий «.000».Для отображения я предлагаю to_char():

SELECT to_char(date_trunc('seconds', timestamp '2018-04-19 10:43:13.719'), 'YYYY-MM-DD HH24:MI:SS.MS')

или дешевле, добавьте «.000» вместо фактических миллисекунд с to_char() напрямую:

SELECT to_char(timestamp '2018-04-19 10:43:13.719', 'YYYY-MM-DD HH24:MI:SS<b>".000"</b>')

Руководство:

Обычный текст допускается в to_char шаблонах и будет выводиться буквально.Вы можете поместить подстроку в двойные кавычки, чтобы она интерпретировалась как буквальный текст, даже если она содержит шаблоны.

...