我在Teradata中有一个日期时间字段,其数据为1/01/2019 02:13:08。 我需要提取特定时间范围(例如1/01/2019和1/02/2019之间)的数据 晚上9点至凌晨6点之间的时间间隔类似于1/01/2019 21:00:00到1/02/2019 6:00:00之间的时间范围。
这如何实现。
谢谢
答案 0 :(得分:1)
听起来您只希望插入在两个日期之间的晚上时间插入的记录。晚上定义为“晚上9点至早上6点之间”
SELECT * FROM table
WHERE
datecol BETWEEN '2019-01-01' AND '2019-02-01' AND
NOT (EXTRACT(HOUR FROM datecol) BETWEEN 6 AND 21)
第一个谓词从日期范围中获取所有数据,第二个谓词排除介于上午6点至晚上9点之间的记录,即,它排除了所有白天的记录,仅保留了夜间的记录>
如果您的查询更简单,那么您实际上只希望从2019-01-01的9pm到2019-02-01的6am之间的记录,然后查询:
SELECT * FROM table
WHERE
datecol BETWEEN '2019-01-01 21:00' AND '2019-02-01 06:00'
请注意,当您在SO上提问时,您的受众群体是国际性的,而且帖子中还不清楚您的约会日期是dd/mm/yyyy
还是mm/dd/yyyy
。我假设使用dd/mm/yyyy
,但您将来可能会考虑将格式切换为yyyy-mm-dd
,因为这是一种不明确的ISO格式。如果您问题中的日期格式为mm/dd/yyyy
,则您需要根据需要调整我的查询,因为我的查询是“一月全部”,但是如果您的意思是mm/dd
,那么您正在寻找“从1月1日到1月2日过夜”