如何使用带有变量的 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 作为时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Prometheus 作为数据源制作带有变量引用另一个变量的 Grafana 模板?

Rails:如何构建每天/每月/每年的统计数据或如何缺少与数据库无关的 SQL 函数(例如:STRFTIME、DATE_FORMAT、DATE_TRUNC)

C# 使用带有 where 子句的 Linq 查询作为 dataTable 上的变量

在 BigQuery 中使用 DATE_TRUNC 的正确方法是啥?

时区感知 date_trunc 函数

使用带有 jquery 选择器的变量