Date and time data types
On this page
ScopeDB supports timestamp and interval for manipulating date and time.
Timestamp
Timestamp internally stores UNIX epoch in nanoseconds in 64-bit integer. Thus, the minimum and maximum value of timestamp are:
SELECT
(-9223372036854775808)::timestamp AS min_ts,
(9223372036854775807)::timestamp AS max_ts;+--------------------------------+--------------------------------+
| min_ts | max_ts |
+--------------------------------+--------------------------------+
| 1677-09-21T00:12:43.145224192Z | 2262-04-11T23:47:16.854775807Z |
+--------------------------------+--------------------------------+You can also create timestamps with string literal that follows RFC 3339 or RFC 9557:
SELECT
'1985-04-12T23:20:50.52Z'::timestamp AS t1_3339,
'1937-01-01T12:00:27.87+00:20'::timestamp AS t2_3339,
'2022-07-08T00:14:07-08:45[-08:45]'::timestamp AS t1_9557,
'2022-07-08T00:14:07+01:00[Europe/Paris]'::timestamp AS t2_9557;+-------------------------+-------------------------+----------------------+----------------------+
| t1_3339 | t2_3339 | t1_9557 | t2_9557 |
+-------------------------+-------------------------+----------------------+----------------------+
| 1985-04-12T23:20:50.52Z | 1937-01-01T11:40:27.87Z | 2022-07-08T08:59:07Z | 2022-07-07T23:14:07Z |
+-------------------------+-------------------------+----------------------+----------------------+Interval
Interval internally stores nanoseconds in 64-bit integer. Thus, the minimum and maximum value of interval are:
SELECT
(-9223372036854775808)::interval AS min_interval,
(9223372036854775807)::interval AS max_interval;+----------------------------------------+------------------------------------+
| min_interval | max_interval |
+----------------------------------------+------------------------------------+
| 2562047h 47m 16s 854ms 775µs 808ns ago | 2562047h 47m 16s 854ms 775µs 807ns |
+----------------------------------------+------------------------------------+You can also create interval with string literal that follows the "Durations" syntax in ISO 8601:
SELECT
'PT1s'::interval AS i1,
'PT59.7788s'::interval AS i2,
'PT25h'::interval AS i3,
'PT25h60s'::interval AS i4,
'-PT26h59.7788s'::interval AS i5;+----+-----------------+-----+--------+-------------------------+
| i1 | i2 | i3 | i4 | i5 |
+----+-----------------+-----+--------+-------------------------+
| 1s | 59s 778ms 800µs | 25h | 25h 1m | 26h 59s 778ms 800µs ago |
+----+-----------------+-----+--------+-------------------------+Alternatively, you can create interval with string literal in the "friendly" duration format:
SELECT
'2h30m'::interval AS i1,
'2h 30m'::interval AS i2,
'1m'::interval AS i3,
'0.0021s'::interval AS i4,
'0s'::interval AS i5,
'3 mins 34s 123ms'::interval AS i6,
'3 mins 34.123 secs'::interval AS i7,
'3 mins 34,123s'::interval AS i8;+--------+--------+----+-----------+----+--------------+--------------+--------------+
| i1 | i2 | i3 | i4 | i5 | i6 | i7 | i8 |
+--------+--------+----+-----------+----+--------------+--------------+--------------+
| 2h 30m | 2h 30m | 1m | 2ms 100µs | 0s | 3m 34s 123ms | 3m 34s 123ms | 3m 34s 123ms |
+--------+--------+----+-----------+----+--------------+--------------+--------------+