【发布时间】:2017-06-04 05:12:32
【问题描述】:
我有一个包含两列的表格:
Column1: Email_address[VARCHAR(255), UNICODE]
Column2: newsletter_subscription_date [TIMESTAMP (0)] e.g. DD.MM.YYYY HH:MM:SS
目标:我想编写一个查询,告诉我在特定时间范围内每天进行了多少订阅。
问题:我不知道如何将时间范围转换为日期格式 YYYY/MM/DD
到目前为止我的查询:
SELECT CAST(newsletter_subscription_date AS DATE FORMAT 'YYYY/MM/DD'), COUNT(*)
FROM emailtable WHERE newsletter_subscription_date >= DATE - 30
GROUP BY newsletter_subscription_date
ORDER BY newsletter_subscription_date DESC
但我得到的只是这样的:
newsletter_subscription_date Count(*)
1 18.01.2017 1
2 18.01.2017 1
3 18.01.2017 1
4 18.01.2017 1
5 18.01.2017 1
6 18.01.2017 1
7 18.01.2017 1
8 18.01.2017 1
9 18.01.2017 1
10 18.01.2017 1
11 18.01.2017 1
如何将时间戳转换为正确的日期?
【问题讨论】:
-
它已经是 CAST 之后的正确日期,但是您的客户端(SQL 助手?)使用基于 Windows 设置的本地规则对其进行格式化。在 SQL 助手中,您可以在 *Tools > Options > Data Format > Display dates in this format"中更改格式。
-
很遗憾,不会改变结果。
-
哦,现在我明白了,您按原始时间戳列分组。您需要
GROUP BY CAST(newsletter_subscription_date AS DATE)或GROUP BY 1
标签: sql-server teradata