我正在尝试将时间戳时间为 05:59:59 AM 或以下的所有数据行转换为上一个日期。例如
,"2018-12-08 05:05:00"将是"2018-12-07",而"2018-11-06 03:02:00"将是"2018-11-05"。时间戳采用"YYYY-MM-DD HH:MM:SS"格式,并存储为 varchar
这是我到目前为止对查询的尝试:
SELECT lift.spot_datetime AS broadcastdate,
CASE when broadcastdate > to_date(>='06:00:00', 'hh:mm:ss') then to_date('MM/DD/YYYY') end as same_date,
ELSE when broadcastdate > to_date(<='05:59:59', 'hh:mm:ss') then DATE_SUB(to_date('MM/DD/YYYY' - 1) end as subtract_date
我遇到的一个问题是,我运行查询的 AWS Athena 客户端似乎无法解析"dateadd"或"datesub"函数。
"AWS Athena 客户端抛出错误。SYNTAX_ERROR:第 1:17 行:无法解析列'天'">
运行上述查询时出现的当前错误如下:"AWS Athena 客户端抛出错误。第 2:39 行:输入 'to_date(>=' [执行 ID 不可用]" 时没有可行的替代方案
从您的SQL查询中,尚不清楚您想要哪种结果结构,但让我试一试:
SELECT
spot_datetime AS broadcastdate,
IF ( TIME(spot_datetime) < '06:00:00',
DATE(spot_datetime) - INTERVAL 1 DAY,
DATE(spot_datetime)
) AS your_desired_date
FROM lift;
+---------------------+-------------------+
| broadcastdate | your_desired_date |
+---------------------+-------------------+
| 2018-12-08 05:05:00 | 2018-12-07 |
| 2018-11-06 03:02:00 | 2018-11-05 |
| 2018-11-06 06:00:00 | 2018-11-06 |
+---------------------+-------------------+
3 rows in set (0.00 sec)