Question

I am trying to extract the date and time from a field in Teradata.

The field in question is:

VwNIMEventFct.EVENT_GMT_TIMESTAMP

Here is what the data look like:

01/02/2012 12:18:59.306000

I'd like the date and time only.

I have tried using EXTRACT(Date, EXTRACT(DAY_HOUR and a few others with no success.

DATE_FORMAT() does not appear to work since I'm on Teradata.

How would I select the date and time from VwNIMEventFct.EVENT_GMT_TIMESTAMP?

Was it helpful?

Solution

If the datatype of EVENT_GMT_TIMESTAMP is a TIMESTAMP, it's simple Standard SQL:

CAST(EVENT_GMT_TIMESTAMP AS DATE)
CAST(EVENT_GMT_TIMESTAMP AS TIME)

If it's a CHAR you need to apply a FORMAT, too:

CAST(CAST(EVENT_GMT_TIMESTAMP AS TIMESTAMP FORMAT 'dd/mm/yyyyBhh:mi:SS.s(6)') AS DATE)
CAST(CAST(EVENT_GMT_TIMESTAMP AS TIMESTAMP FORMAT 'dd/mm/yyyyBhh:mi:SS.s(6)') AS TIME)

Edit:

For simply changing the display format you need to add a FORMAT and a CAST to a string:

CAST(CAST(EVENT_GMT_TIMESTAMP AS FORMAT 'YYYYMMDDHHMI') AS CHAR(12))
or
CAST(CAST(EVENT_GMT_TIMESTAMP AS FORMAT 'YYYYMMDDHHMISS') AS CHAR(14))

If you don't care about display, just want to truncate the seconds:

EVENT_GMT_TIMESTAMP - (EXTRACT(SECOND FROM EVENT_GMT_TIMESTAMP) * INTERVAL '1.000000' SECOND)

Working with timestamps is a bit tricky :-)

OTHER TIPS

I know this is an old topic, but I've struggled with this too. Try:

CAST(EVENT_GMT_TIMESTAMP AS TIMESTAMP(0))

The result will be

01/02/2012 12:18:59

The datatype will still be timestamp, but it will just be the date and time with no microseconds (looks just like a datetime object in Microsoft SQL).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top