Postgres & PHP - Преобразование меток времени UT C в местное время - PullRequest
1 голос
/ 14 апреля 2020

Я новичок в Postgres / SQL. Все метки времени в БД, с которой я работаю, хранятся в формате UT C.

Я пытаюсь выполнить следующий запрос, но все мои результаты выключены из-за разницы часовых поясов. Как мне исправить это в этом запросе? Я работаю в Америке \ Chica go или часовом поясе CST.

select id FROM audit_log WHERE (action_id LIKE '%auth%' AND successful = 'true' AND timestamp BETWEEN '$from' AND '$to'

$from = date("Y-m-d 06:00:00");
$to = date("Y-m-d 11:59:59");

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете преобразовать свою временную метку UT C в PST часового пояса со следующим выражением:

timestamp at time zone 'utc' at time zone 'cst'

В вашем запросе:

select id 
FROM audit_log 
WHERE 
    action_id LIKE '%auth%' 
    AND successful = 'true' 
    AND timestamp at time zone 'utc' at time zone 'cst' BETWEEN ? AND ?

Не связанные заметки:

  • , если successful - логическое значение, вы можете просто WHERE ... AND successful AND ...

  • использовать параметризованные запросы, а не объединять переменные в строке запроса; это делает ваш код более безопасным и эффективным.

...