Search code examples
teradatateradata-sql-assistant

TeradataSQL: Time to String, Add to Date and Compare to Another Time and Data


I'm trying to figure out the cleanest way to do a comparison in Teradata SQL Assistant. I have the scheduled start date (TimeStamp), the Schedule start time (varchar), actual start and end times (TimeStamp). I need to consolidate the scheduled start date and time and be able to compare it to the actual start and end date and time without modifying the original data (because it's not mine). I realize that the Scheduled Start Time [SST] is in a 24 hour time format with a AM/PM suffix, but like I said before, I can't change that.

I tried to do select cast(substr(scheduled_start_date,1,5) as TIMESTAMP(0)) from DB.TBL but am getting the "Invalid timestamp" error. There is example table data below.

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

Thanks!


Solution

  • You need to cast the schedule start time as an Interval, then you can easily add it to the start date:

    scheduled_start_date
    + Cast(Substr(scheduled_start_time, 1,5) AS INTERVAL HOUR TO MINUTE)
    

    A start date which is a timestamp seems to indicate this was ported from Oracle/SQL Server?

    And a 24 hour time format with a AM/PM suffix is also quite strange.