2016-06-24 5 views
0

私は、データベース内の値以下している:私のコードではdate_truncを変数にタイムスタンプとして使用する方法は?

Wed Jun 01 2016 00:00:00 GMT+0200 (CEST) 

を私はこのようなものだ:

2016-06-23 

私は自分のコード内の1つのような日付を照会する必要があるが、とPostgreSQLで私は日付から不要な情報を "切り捨て"するためにdate_truncを見つけました。使用例次documentationショー:

redshift.query("SELECT stuff, ts , date_trunc('day', TIMESTAMP 'ts') as 'date' 
    FROM ::table_name 
    WHERE date = :day",{table_name: name, day: day}, function(err, data){ 

>>>error: Redshift query Error: error: syntax error at or near "'date'" 
しかし、明らかにこれは動作しませんでした:

SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40'); 
Result: 2001-02-16 20:00:00 

は、だから私は、これは動作するはずですthougt。それは私が "日"の近くで構文エラーを持っていると私に言った、私はその 'ts'を推測する。私が見つけたすべての例では、タイムスタンプはハードコードされていましたが、それは私が必要とするものではありません。任意のアイデアハードコードの代わりにタイムスタンプとして列を使用する方法?

+0

't(x)を(select current_timestamp)としてください。select x、date_trunc( 'day'、x)、x :: date from t;' – Abelisto

答えて

0

カラムtsを参照する代わりに、偶然には'ts'という文字列を使用したようです。さらに、列エイリアスとして'date'のような文字列リテラルを使用することはできません。それは識別子でなければなりません。

だから、たぶん、あなたは、文字列リテラル('で引用された)および識別子("で引用された)を混ぜ

date_trunc('day', TIMESTAMP ts) as "date" 

のようになります。

+0

これも ''なしで使用しましたが、これは絶望的でした:D – nova

+0

まあ、エラーメッセージを表示できませんでした。 –

関連する問題