Teradata TeradasQL:时间字符串、添加到日期并与其他时间和数据进行比较
我正试图找出在Teradata SQL Assistant中进行比较的最干净的方法。我有计划开始日期时间戳,计划开始时间varchar,实际开始和结束时间时间戳。我需要合并计划的开始日期和时间,并能够将其与实际的开始和结束日期和时间进行比较,而无需修改原始数据,因为它不是我的。我意识到计划开始时间[SST]是一种24小时格式,带有AM/PM后缀,但正如我之前所说的,我不能改变它 我试图从DB.TBL中选择castsubstrscheduled_start_date,1,5作为timestamp 0,但得到了无效的timestamp错误。下面是示例表数据Teradata TeradasQL:时间字符串、添加到日期并与其他时间和数据进行比较,teradata,teradata-sql-assistant,Teradata,Teradata Sql Assistant,我正试图找出在Teradata SQL Assistant中进行比较的最干净的方法。我有计划开始日期时间戳,计划开始时间varchar,实际开始和结束时间时间戳。我需要合并计划的开始日期和时间,并能够将其与实际的开始和结束日期和时间进行比较,而无需修改原始数据,因为它不是我的。我意识到计划开始时间[SST]是一种24小时格式,带有AM/PM后缀,但正如我之前所说的,我不能改变它 我试图从DB.TBL中选择castsubstrscheduled_start_date,1,5作为timestamp
Sch Start Date Sch Start Time Actual Start Actual End
09/11/2017 00:00:00 11:30 AM 09/11/2017 11:34:16 09/11/2017 11:58:00
05/26/2017 00:00:00 15:30 PM 05/26/2017 15:40:00 05/26/2017 15:55:15
11/06/2017 00:00:00 19:30 PM 11/06/2017 21:25:00 11/06/2017 21:45:00
谢谢 有几件事可以尝试: 将单独的“计划日期”和“计划时间”字段转换为字符串,将它们连接起来,并将其输入到时间戳转换中。比如: 挑选 CastScheduled_Date作为Date作为VARCHAR25作为Date_字符串, CastScheduled_Time作为时间格式'HH:MM BB'作为VARCHAR25作为时间字符串, CASTTRIMDate_字符串| | | | TRIMTime_字符串作为时间戳0作为MyTimestamp 将计划时间字段强制转换为时间数据类型。将计划日期字段强制转换为日期数据类型。然后以某种方式将二者结合到一个时间戳字段中-使用强制转换或某种时间戳构造函数,但不确定这是否可行 只要正确设置字符串的格式,选项1就一定可以工作。尽量避免使用子字符串,而是使用格式转换为日期/时间字段。不确定选项2。查看以下链接,了解如何使用format子句格式化日期/时间字段:
抱歉,我无法访问TD系统进行测试。如果您运气好,请告诉我。您需要将计划开始时间转换为间隔,然后您可以轻松地将其添加到开始日期:
scheduled_start_date
+ Cast(Substr(scheduled_start_time, 1,5) AS INTERVAL HOUR TO MINUTE)
作为时间戳的开始日期似乎表明这是从Oracle/SQL Server移植的
加上AM/PM后缀的24小时时间格式也很奇怪。我相信这是一个甲骨文。而且它工作得很好。谢谢是的,我不知道是谁设计了这个,也不知道为什么它有这样的价值观,但唉。