2010-12-20 18 views
2

私はそのまま維持したいと思い、このPHPスクリプトを持っている:PostgreSQL:to_char()を使わずに日付をフォーマットする方法は?

$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夜3時51分37秒として印刷されていることです2010-12-18。私はCentOSの下のPostgreSQL 8.4.5を使用してQDATETIMEとしてto_char関数(QDATETIME、「YYYY-MM-DD」)を呼び出すことができますが、日付の出力形式に影響を与えるためにいくつかの他の方法を見つけることを好むだろう...

知っています5.5 Linux/64ビット。

ありがとうございました!データ型DATEに アレックス

+1

「TO_CHAR」は、出力をフォーマットするために特別に設計されています。なぜあなたはそれを使いたくないのですか? – Quassnoi

答えて

3

日付の書式設定にデータベースを使用するよりも、PHPを使用する方がよいでしょう。

echo date("Y-m-d", strtotime($row['column'])); 
(クエリを構築するときに声明を参加混乱の)

この両方のあなたの最初の問題を解決し、また、(例えば、多分、後でユーザーが好ま日付フォーマットのための優先順位を設定することができます)あなたはより多くの柔軟性を与え、スケーラビリティが向上します(PHPで無限に水平スケーラビリティが向上しています)。

2

だけのCAST:

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

彼/彼女は彼/彼女のPHPスクリプトを変更したくない... –

+1

これは 'datestyle'設定に依存します。 – Quassnoi

0

あなたのPHPスクリプトを変更したくない場合は、datestyle設定パラメータを調整してくださいすることができます。

PHPスクリプトを変更することをお勧めします。グローバルサーバー構成を変更すると、現在サーバー上で実行されている他のものに影響する可能性があります。

+0

ありがとうございます –

関連する問題