拉取特定日期时间范围#Teradata的数据

问题描述 投票:0回答:1

我在Teradata有一个日期时间,数据为1/01/2019 02:13:08。我需要提取特定时间范围内的数据,例如1月1日至201日和1月2日之间以及晚上9点至早上6点之间的时间间隔,例如1/01/2019 21:00:00和1/02/2019之间的范围6:00:00

如何实现这一目标。

谢谢

teradata
1个回答
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的晚上9点到2019-02-01的早上6点之间的记录,然后查询:

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日”

© www.soinside.com 2019 - 2024. All rights reserved.