PostgreSQL: как отформатировать дату без использования to_char ()? - PullRequest
2 голосов
/ 20 декабря 2010

У меня есть этот PHP-скрипт, который я бы хотел оставить без изменений:

$display = array(
    'QDATETIME',
    'ID',
    'NAME',
    'CATEGORY',
    'APPSVERSION',
    'OSVERSION',
);

$sql = sprintf("
    select %s from quincytrack
    where qdatetime > (now() - interval '2 day') and
    qdatetime <= now()",
    join(', ', $display));
$sth = $pg->prepare($sql);
$sth->execute($args);

Моя проблема в том, что QDATETIME печатается как 2010-12-18 15: 51: 37 , а мне нужно как 2010-12-18 . Я знаю, что могу назвать to_char (QDATETIME, 'YYYY-MM-DD') как QDATETIME , но предпочел бы найти какой-то другой способ повлиять на формат вывода даты ...

Использование PostgreSQL 8.4.5 под CentOS 5.5 Linux / 64 bit.

Спасибо! Alex

Ответы [ 3 ]

3 голосов
/ 20 декабря 2010

Лучшим подходом, чем полагаться на базу данных для форматирования даты, было бы полагаться на PHP для этого.

echo date("Y-m-d", strtotime($row['column']));

Это одновременно решает вашу начальную проблему (путаницу в операторе соединения при построении запроса), а также дает вам гораздо большую гибкость (например, может позже пользователь сможет установить предпочтительный формат даты) и большая масштабируемость (чем больше работы, которую вы можете выполнять в PHP, которая неограниченно масштабируется по горизонтали, тем лучше).

3 голосов
/ 20 декабря 2010

Просто CAST для типа данных ДАТА:

SELECT
    CAST('2010-12-18 15:51:37' AS DATE);
0 голосов
/ 20 декабря 2010

Если вы не хотите менять свой PHP-скрипт, вы можете попробовать настроить datestyle параметр конфигурации.

Я бы порекомендовал вам просто изменить скрипт PHP. Изменение глобальной конфигурации сервера может повлиять на другие компоненты, которые в данный момент работают на вашем сервере.

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