如何将date_trunc与变量一起用作时间戳?

时间:2016-06-24 13:37:15

标签: postgresql date syntax-error amazon-redshift

我的数据库中有以下值:

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

在我的代码中我得到了这样的东西:

2016-06-23

我需要在我的代码中查询类似日期的日期,并且在postgreSQL中我发现date_trunc从日期“切断”不必要的信息。 documentation显示以下用法示例:

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

所以我认为这应该有效:

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'"

但显然这不起作用。它告诉我,我在“日”附近遇到语法错误,我猜它是'ts'。在我发现的所有示例中,时间戳都是硬编码的,但这不是我需要的。任何想法如何使用colum作为时间戳而不是硬编码?

1 个答案:

答案 0 :(得分:0)

您似乎意外地使用了文字'ts'而不是引用列ts。此外,您不能将'date'之类的字符串文字作为列别名。它必须是一个标识符。

所以看起来应该是

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

也许你混淆了字符串文字(引用')和标识符(引用")。