PostgreSQL:如何在不使用to_char()的情况下格式化日期?

时间:2010-12-20 14:39:25

标签: php postgresql

我有这个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 ,但更愿意找到影响日期输出格式的其他方法......

在CentOS 5.5 Linux / 64位下使用PostgreSQL 8.4.5。

谢谢! 亚历

3 个答案:

答案 0 :(得分:3)

只需CAST到数据类型DATE:

SELECT
    CAST('2010-12-18 15:51:37' AS DATE);

答案 1 :(得分:3)

比依赖数据库进行日期格式化更好的方法是依靠PHP来实现这一点。

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

这既解决了您的初始问题(在构建查询时混淆了join语句),也为您提供了更多的灵活性(例如,可能以后用户可以设置首选日期格式的首选项),以及更高的可伸缩性(你可以在PHP中做的工作越多,水平可扩展性越好,越好。

答案 2 :(得分:0)

如果您不想更改PHP脚本,可以尝试调整datestyle配置参数。

我建议您只是更改PHP脚本。更改全局服务器配置可能会影响当前在服务器上运行的其他内容。