Проблем:
Бихте искали да получите текущата дата и час в база данни на PostgreSQL. Нямате нужда от изместване на часовата зона.
Решение:
Ще използваме функцията LOCALTIMESTAMP
за да получите текущата дата и час без информация за часовата зона:
SELECT LOCALTIMESTAMP ;
Ето резултата от заявката:
2019-09-24 20:10:58.977914
Дискусия:
PostgreSQL функцията LOCALTIMESTAMP
връща текущата дата и час (на машината, изпълняваща този екземпляр на PostgreSQL) като клеймо за време стойност. Използва „ГГГГ-ММ-ДД hh:mm:ss.nnnnnnn ' формат, където:
- ГГГГ е 4-цифрена година.
- ММ е двуцифрен месец.
- DD е двуцифрен ден.
- чх е двуцифрен час.
- мм е 2-цифрена минута.
- с е 2-цифрена секунда.
- nnnnnn са дробни секунди (от нула до 6-цифрена точност).
Както забелязвате, тази функция няма скоби. Въпреки това, ако искате да покажете датата и часа с конкретна точност, поставете цяло число от 0 до 6 като аргумент в скобите. Това ще върне датата и часа с желания от вас брой части от секундите. Например, LOCALTIMESTAMP(1)
обозначава само една дробна секунда (т.е. едно място след десетичната запетая); 2 ще върне две места и т.н. Прецизността по подразбиране е 6, което също е максималният брой дробни секунди; това е, което получавате, ако изобщо не използвате скоби. Вижте следващия пример:
SELECT LOCALTIMESTAMP(0) ;
Ето резултата от заявката:
2019-09-24 20:10:58
Този резултат не съдържа дробни секунди, защото поставяме 0 като аргумент.
Тази функция връща момента, в който е започнала текущата транзакция. Разликата между LOCALTIMESTAMP
и CURRENT_TIMESTAMP
е, че LOCALTIMESTAMP
не включва изместването на часовата зона.