0 оценок0% нашли этот документ полезным (0 голосов)
509 просмотров3 страницы
This document provides several tips and tricks for working with timestamps in Teradata:
1. It shows how to cast a date and time as a timestamp, convert a timestamp to a specific format like "MMM-YYYY", and insert the current timestamp into a timestamp column.
2. It demonstrates how to add an interval like minutes to a timestamp.
3. Examples are given for converting strings and data types to timestamps, displaying timestamps in different formats, subtracting timestamps to get intervals, and using the EXTRACT function to parse dates and times.
This document provides several tips and tricks for working with timestamps in Teradata:
1. It shows how to cast a date and time as a timestamp, convert a timestamp to a specific format like "MMM-YYYY", and insert the current timestamp into a timestamp column.
2. It demonstrates how to add an interval like minutes to a timestamp.
3. Examples are given for converting strings and data types to timestamps, displaying timestamps in different formats, subtracting timestamps to get intervals, and using the EXTRACT function to parse dates and times.
This document provides several tips and tricks for working with timestamps in Teradata:
1. It shows how to cast a date and time as a timestamp, convert a timestamp to a specific format like "MMM-YYYY", and insert the current timestamp into a timestamp column.
2. It demonstrates how to add an interval like minutes to a timestamp.
3. Examples are given for converting strings and data types to timestamps, displaying timestamps in different formats, subtracting timestamps to get intervals, and using the EXTRACT function to parse dates and times.
SELECT CAST(CAST(CURRENT_DATE AS FORMAT 'YYYY-MM-DD') || ' ' || CAST(CAST(CURRENT_TIME AS FORMAT 'HH:MI:SS') AS CHAR(8)) AS TIMESTAMP(0)); SELECT CAST(CURRENT_DATE AS TIMESTAMP(0)) + ((CURRENT_TIME - TIME '00:00:00') HOUR TO SECOND(0)); ===================================================================== =========== TIP 2: Convert timestamp field in Teradata into format 'MMM-YYYY' select CURRENT_TIMESTAMP (FORMAT 'MMM-YYYY'); Current TimeStamp(6) ------------------Mar-2010 ===================================================================== ========= Inserting current_timestamp value into timestamp(0) column Create table stats(record_time TIMESTAMP(0)); Whenever we try to populate the current_timestamp value into this column using insert into stats(record_time) select current_timestamp ; we get following error. 7454: Date Time field overflow. To avoid this, we have two solutions Solutions: 1. Data type for CURRENT_TIMESTAMP is TIMESTAMP(6) and you are trying to insert a TIMESTAMP(6) data to a TIMESTAMP(0) and that's why you are getting this error. insert into stats(record_time) Sel cast(CURRENT_DATE as TimeStamp(0)) + ((CURRENT_TIME - time '00:00:00') hour to second(0)) ; 2. insert into stats(record_time) select CURRENT_TIMESTAMP(0); ===============================================================================
Add minutes to timestamp
How to add 10 minutes to current timestamp in TD? SEL CURRENT_TIMESTAMP + INTERVAL '10' MINUTE. The following example is taken straight from Teradata Functions and Operators reference manual. TechM Internal
Example 1: Subtract two TIMESTAMP Types
Consider the following table: CREATE TABLE BillDateTime (start_time TIMESTAMP(0),end_time TIMESTAMP(0)); Determine the difference, specifying an Interval unit of DAY TO SECOND for the result: SELECT (end_time - start_time) DAY(4) TO SECOND FROM BillDateTime; The DAY(4) specifies four digits of precision, and allows for a maximum of 9999 days, or Approximately 27 years. The result is an Interval that looks like this: 5 16:49:20.340000 ================================================================================ ===
Convert varchar to timestamp
have a column in source strdate1 as VARCHAR(23) and the value being '20100310181010'. SELECT CAST ('20100310181010' AS TIMESTAMP(0) FORMAT 'YYYYMMDDHHMISS'); ================================================================================ =====
: Display Timestamp with AM /PM format
SELECT CAST(TIMESTAMP'2010-03-12 14:32:45' AS FORMAT 'yyyymmddbhh:mi:ssbt') (char(20)); ================================================================================
Display timestamp in 22 Mar 2010 00:26:54.840 format
select cast(current_TIMESTAMP(3) as timestamp(3) FORMAT 'ddbmmmbyyyybhh:mi:ss.s(3)') (char(25)); ================================================================================ ===
Subtract two TIMESTAMP Types
Consider the following table: CREATE TABLE BillDateTime (start_time TIMESTAMP(0),end_time TIMESTAMP(0) ); Determine the difference, specifying an Interval unit of DAY TO SECOND for the result: SELECT (end_time - start_time) DAY(4) TO SECOND FROM BillDateTime; The DAY(4) specifies four digits of precision, and allows for a maximum of 9999 days, or Approximately 27 years. The result is an Interval that looks like this: 5 16:49:20.340000
Extracting From Current Date(March 20,2010) Query Result SELECT DATE; 10/03/20 (Default format) SELECT EXTRACT(YEAR FROM DATE); 2010 SELECT EXTRACT(MONTH FROM DATE); 03 SELECT EXTRACT(DAY FROM DATE); 20 SELECT EXTRACT(YEAR FROM DATE + 365); 2011 SELECT EXTRACT(MONTH FROM DATE + 30); 04 SELECT EXTRACT(DAY FROM DATE + 12); 01 ================================================================== Extracting From Current Time ( 2:42 PM ) Query Result SELECT TIME; 14:42:32 (Default format) SELECT EXTRACT(HOUR FROM TIME); 14 SELECT EXTRACT(MINUTE FROM TIME); 42