LaL*_*aTi 2 sql amazon-web-services amazon-redshift
我试图在 SQL 语句中使用 Date_Trunc for MONTH 函数,但不知何故它对我不起作用。我正在尝试提取 2019 年 4 月 1 日之后发生的条目。Redshift 数据库中的原始日期格式是我尝试将其分组为月/年存储桶的格式:2019-04-08T00:13:20.000Z
输入
SELECT
client_id as user_id,
session_utc as job_date --(format:2019-04-08T00:13:20.000Z)
FROM table1 as hits
WHERE job_date >= DATE_TRUNC('month', 2019-04-01)
group by 1,2;
Run Code Online (Sandbox Code Playgroud)
输出
"ERROR: function date_trunc("unknown", integer) does not exist Hint: No function matches the given name and argument types. You may need to add explicit type casts."
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
DATE_TRUNC函数 - Amazon Redshift将时间戳作为输入并提供时间戳作为输出:
DATE_TRUNC('datepart', timestamp)
Run Code Online (Sandbox Code Playgroud)
例如:
SELECT DATE_TRUNC('month', '2019-05-07'::timestamp)
2019-05-01 00:00:00
Run Code Online (Sandbox Code Playgroud)
因此,你的行应该是:
WHERE job_date >= DATE_TRUNC('month', '2019-04-01'::timestamp)
Run Code Online (Sandbox Code Playgroud)
如果您希望输出为日期,请附加::date:
SELECT DATE_TRUNC('month', '2019-05-07'::timestamp)::date
2019-05-01
Run Code Online (Sandbox Code Playgroud)
另请注意,日期会转换为午夜时的时间戳。这可能会导致某些比较出现差异。例如:
'2019-05-07 03:03:31.389324+00'::timestamp > '2019-05-07'::timestamp
Run Code Online (Sandbox Code Playgroud)
将评估为,True因为它与一天开始时的午夜进行比较。这与比较两个日期(没有时间戳)不同。
| 归档时间: |
|
| 查看次数: |
17261 次 |
| 最近记录: |