如何使用带有变量的 date_trunc 作为时间戳?
Posted
技术标签:
【中文标题】如何使用带有变量的 date_trunc 作为时间戳?【英文标题】:How to use date_trunc with variable as timestamp? 【发布时间】:2016-06-24 13:37:14 【问题描述】:我的数据库中有以下值:
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'"
但显然这不起作用。它告诉我在“day”附近出现语法错误,我猜它是“ts”。在我找到的所有示例中,时间戳都是硬编码的,但这不是我需要的。任何想法如何将它与列一起用作时间戳而不是硬编码?
【问题讨论】:
with t(x) as (select current_timestamp) select x, date_trunc('day', x), x::date from t;
【参考方案1】:
您似乎不小心使用了文字 'ts'
而不是引用列 ts
。此外,您不能将像 'date'
这样的字符串文字作为列别名。它必须是一个标识符。
应该是这样的
date_trunc('day', TIMESTAMP ts) as "date"
也许你混淆了字符串文字(用'
引用)和标识符(用"
引用)。
【讨论】:
我也使用它没有 ' ' ,这只是一个绝望的尝试:D以上是关于如何使用带有变量的 date_trunc 作为时间戳?的主要内容,如果未能解决你的问题,请参考以下文章
C# 使用带有 where 子句的 Linq 查询作为 dataTable 上的变量