如何在Redshift中从datetime提取时间判断早于/晚于指定时间?
Redshift判断Datetime是否早于/晚于下午3点的实现方法
核心思路
通过Redshift的日期函数提取时间的小时部分(24小时制),再用CASE分支逻辑返回对应的判断结果。
场景1:date_time为datetime类型
如果你的date_time列本身是Redshift支持的datetime/timestamp类型,直接使用以下查询:
SELECT date_time, CASE WHEN EXTRACT(HOUR FROM date_time) < 15 THEN 'before 3PM' ELSE 'after 3PM' END AS time_check FROM your_table;
EXTRACT(HOUR FROM date_time):从时间列中提取24小时制的小时数,下午3点对应数值15CASE语句:根据小时数判断,小于15则标记为before 3PM,否则标记为after 3PM
场景2:date_time为字符串类型
如果date_time是字符串格式(如示例中的14 March, 2023, 12:21),需要先将其转换为timestamp类型再处理:
SELECT date_time, CASE WHEN EXTRACT(HOUR FROM TO_TIMESTAMP(date_time, 'DD Month, YYYY, HH24:MI')) < 15 THEN 'before 3PM' ELSE 'after 3PM' END AS time_check FROM your_table;
TO_TIMESTAMP(date_time, 'DD Month, YYYY, HH24:MI'):按照指定格式将字符串转换为timestamp类型,格式串与示例中的日期格式完全匹配- 后续逻辑同场景1,提取小时数后进行判断
内容的提问来源于stack exchange,提问作者nomnom3214
相关产品推荐
相关产品推荐

