DEV Community

AntDB
AntDB

Posted on

AntDB-Oracle Compatibility Developer's Manual P3–4

Timestamp

A valid timestamp type input value is composed of a date and a time type value. The date part and the time part of the timestamp are capable of being formatted.

The following example of a timestamp uses Oracle's default format.

08-JAN-99 04:05:06
Enter fullscreen mode Exit fullscreen mode

The following example of a timestamp follows the ISO 8601 standard format.

1999-01-08 04:05:06
Enter fullscreen mode Exit fullscreen mode
Time interval

Interval is the interval before two dates or times.

  • INTERVAL YEAR TO MONTH:

*Format: *

INTERVAL 'integer \[- integer ]' { YEAR \| MONTH } \[ TO { YEAR \| MONTH } ]

INTERVAL 'integer \[- integer ]' { YEAR \| MONTH } \[ (precision) ]
Enter fullscreen mode Exit fullscreen mode

Where precision means precision, in AntDB it doesn't actually limit the precision, but only supports it syntactically. In Oracle, if the specified precision is too small, it will report an error, but AntDB will not report an error, but still display the actual precision.

Example:

postgres=#  select interval '100' year(2) from dual;
 INTERVAL  
------------------
       100 years
(1 row)
Enter fullscreen mode Exit fullscreen mode
  • INTERVAL DAY TO SECOND

Format:

INTERVAL '{ integer \| integer time\_expr \| time\_expr }'

{{ DAY \| HOUR \| MINUTE \| SECOND }

\[ TO { DAY \| HOUR \| MINUTE \| SECOND \[ (fractional\_seconds\_precision) ] } ]

INTERVAL '{ integer \| integer time\_expr \| time\_expr }'

{ { DAY \| HOUR \| MINUTE \| SECOND} \[ (leading\_precision) ] }

Enter fullscreen mode Exit fullscreen mode

Where precision means precision, in AntDB it doesn't actually limit the precision, but only supports it syntactically. In Oracle, if the specified precision is too small, it will report an error, but AntDB will not report an error, but still display the actual precision. And the precision of seconds can only be accurate to 6 digits. If the specified precision of seconds is greater than 6 bits, it will be converted to 6.

Example:

select INTERVAL '4 5:12:10.222' DAY TO SECOND(3) from dual;
select INTERVAL '4 5:12' DAY TO MINUTE  from dual;
select INTERVAL '400' DAY(3)  from dual;
select INTERVAL '11:12:10.2222222' HOUR TO SECOND(6)  from dual;
select INTERVAL '11:20' HOUR TO MINUTE  from dual;
select INTERVAL '10' HOUR  from dual;
select INTERVAL '10:22' MINUTE TO SECOND  from dual;
select INTERVAL '10' MINUTE  from dual;
select INTERVAL '4' DAY  from dual;
select INTERVAL '25' HOUR  from dual;
select INTERVAL '40' MINUTE  from dual;
select INTERVAL '120' HOUR(3) from dual; 
select INTERVAL '20' DAY - INTERVAL '240' HOUR = INTERVAL '10-0' DAY TO SECOND  from dual;
Enter fullscreen mode Exit fullscreen mode

There is also incomplete support compared to Oracle, for example, the following formats are not supported:

select INTERVAL '400 5' DAY(3) TO HOUR from dual;
select INTERVAL '30.12345' SECOND(2,4)  from dual;
select INTERVAL '10:22' MINUTE(1) TO SECOND  from dual;
Enter fullscreen mode Exit fullscreen mode
Date/time output format

The default output format for date/time types is the ISO 8601 format yyyy-mm-dd. In Oracle, the default output format is the format known as Redwood date (dd-MON-yy). However, in AntDB, if you want to output such a date format, you need to use the to_char function to format the output.

select to_char(sysdate,'DD-MON-MM hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'DD-MON-MM HH24:MI:SS')  
------------------------------------------
 03-SEP-09 15:51:47
(1 row)
Enter fullscreen mode Exit fullscreen mode

The table below shows examples of the two styles of output formats, Redwood and ISO8601.

Description Example
Redwood style 31-DEC-05 07:37:16
ISO 8601/SQL standard 1997-12-17 07:37:16

Boolean type

AntDB provides the standard SQL type BOOLEAN. BOOLEAN can only have one of two states: "true" or "false". The third state, "unknown", is represented by the null value in SQL language.

Name Storage capacity Description
BOOLEAN 1 bytes Logical Boolean type (true/false)

The valid value for the "true" state is TRUE, and the valid value for the "false" state is FALSE.

Oldest comments (0)