| 运算符 | 示例 | 结果 |
|---|---|---|
| + | date ‘2001-09-28’ + integer ‘7’ | date ‘2001-10-05’ |
| + | date ‘2001-09-28’ + interval ‘1 hour’ | timestamp ‘2001-09-28 01:00:00’ |
| + | date ‘2001-09-28’ + time ‘03:00’ | timestamp ‘2001-09-28 03:00:00’ |
| + | interval ‘1 day’ + interval ‘1 hour’ | interval ‘1 day 01:00:00’ |
| + | timestamp ‘2001-09-28 01:00’ + interval ‘23 hours’ | timestamp ‘2001-09-29 00:00:00’ |
| + | time ‘01:00’ + interval ‘3 hours’ | time ‘04:00:00’ |
| - | - interval ‘23 hours’ | interval ‘-23:00:00’ |
| - | date ‘2001-10-01’ - date ‘2001-09-28’ | integer ‘3’ (days) |
| - | date ‘2001-10-01’ - integer ‘7’ | date ‘2001-09-24’ |
| - | date ‘2001-09-28’ - interval ‘1 hour’ | timestamp ‘2001-09-27 23:00:00’ |
| - | time ‘05:00’ - time ‘03:00’ | interval ‘02:00:00’ |
| - | time ‘05:00’ - interval ‘2 hours’ | time ‘03:00:00’ |
| - | timestamp ‘2001-09-28 23:00’ - interval ‘23 hours’ | timestamp ‘2001-09-28 00:00:00’ |
| - | interval ‘1 day’ - interval ‘1 hour’ | interval ‘1 day -01:00:00’ |
| - | timestamp ‘2001-09-29 03:00’ - timestamp ‘2001-09-27 12:00’ | interval ‘1 day 15:00:00’ |
| * | 900 * interval ‘1 second’ | interval ‘00:15:00’ |
| * | 21 * interval ‘1 day’ | interval ‘21 days’ |
| * | double precision ‘3.5’ * interval ‘1 hour’ | interval ‘03:30:00’ |
| / | interval ‘1 hour’ / double precision ‘1.5’ | interval ‘00:40:00’ |
SELECT age(timestamp '2020-12-31', timestamp '2020-01-01'), age(timestamp '2020-01-01');
age |age |
---------------|-------------|
11 mons 30 days|2 mons 2 days|
SELECT date_part('year', timestamp '2020-03-03 20:38:40'), extract(year from timestamp '2020-03-03 20:38:40'),
date_part('month', interval '1 years 5 months'), extract(month from interval '1 years 5 months');
date_part|date_part|date_part|date_part|
---------|---------|---------|---------|
2020| 2020| 5| 5|
century,世纪;
day,对于 timestamp,返回月份中的第几天;对于 interval,返回天数;
decade,年份除以 10;
dow,星期天(0)到星期六(6);
doy,一年中的第几天,(1 - 365/366);
epoch,对于 timestamp with time zone,返回从1970-01-01 00:00:00 UTC 到该时间的秒数;对于 date 和 timestamp,返回本地时间的 1970-01-01 00:00:00 到该时间的秒数;对于 interval,返回以秒数表示的该时间间隔;
hour,小时(1 - 23);
isodow,ISO 8601 标准中的星期一(1)到星期天(7);
isoyear,ISO 8601 标准定义的日期所在的年份。每年从包含 1 月 4 日的星期一开始,2017 年 01 月 01 日属于 2016 年;
microseconds,微秒,包含秒和小数秒在内的数字乘以 1000000;
millennium,千年;
milliseconds,毫秒,包含秒和小数秒在内的数字乘以 1000;
minute,分钟,(0 - 59);
month,月份;
quarter,季度,(1 - 4);
second,秒数,包含小数秒;
timezone,UTC 时区,单位为秒;
timezone_hour,UTC 时区中的小时部分;
timezone_minute,UTC 时区中的分钟部分;
week,ISO 8601 标准中的星期几,每年从第一个星期四所在的一周开始;
year,年份。
SELECT date_trunc('year', timestamp '2020-03-03 20:38:40'),
date_trunc('day', timestamptz '2020-03-03 20:38:40+00', 'Asia/Shanghai'),
date_trunc('hour', interval '2 days 3 hours 40 minutes');
date_trunc |date_trunc |date_trunc |
-------------------|-------------------|---------------|
2020-01-01 00:00:00|2020-03-04 00:00:00|2 days 03:00:00|
microseconds
milliseconds
second
minute
hour
day
week
month
quarter
year
decade
century
millennium
SELECT make_date(2020, 03, 15);
make_date |
----------|
2020-03-15|
SELECT make_interval(days => 1, hours => 5);
make_interval |
--------------|
1 day 05:00:00|
SELECT make_time(1, 2, 30.5);
make_time|
-----------|
01:02:30.5|
SELECT make_timestamp(2020, 3, 15, 8, 20, 23.5);
make_timestamp |
---------------------|
2020-03-15 08:20:23.5|
SELECT make_timestamptz(2020, 3, 15, 8, 20, 23.5);
make_timestamptz |
------------------------|
2020-03-15 08:20:23.5+08|
SELECT to_timestamp(1583152349);
to_timestamp |
----------------------|
2020-03-02 20:32:29+08|
SELECT TIMESTAMP '2020-03-03 20:38:40' AT TIME ZONE 'Asia/Shanghai',
TIMESTAMP WITH TIME ZONE '2020-03-03 20:38:40-05:00' AT TIME ZONE 'Asia/Shanghai',
TIME WITH TIME ZONE '20:38:40-05:00' AT TIME ZONE 'Asia/Shanghai';
timezone |timezone |timezone |
----------------------|-------------------|-----------|
2020-03-03 20:38:40+08|2020-03-04 09:38:40|09:38:40+08|
SELECT CAST ('15' AS INTEGER), '2020-03-15'::DATE;
int4|date |
----|----------|
15|2020-03-15|
SELECT CAST ('A15' AS INTEGER);
SQL 错误 [22P02]: 错误: 无效的类型 integer 输入语法: "A15"
位置:14
SELECT to_date('2020/03/15','YYYY/MM/DD');
to_date |
----------|
2020-03-15|
SELECT to_timestamp('2020-03-15 19:08:00.678', 'YYYY-MM-DD HH24:MI:SS.MS');
to_timestamp |
--------------------------|
2020-03-15 19:08:00.678+08|
SELECT to_char(current_timestamp, 'HH24:MI:SS'),
to_char(interval '5h 12m 30s', 'HH12:MI:SS'),
to_char(-125.8, '999D99');
to_char |to_char |to_char|
--------|--------|-------|
21:30:22|05:12:30|-125.80|
SELECT to_number('¥125.8', 'L999D9');
to_number|
---------|
125.8|
SELECT 1+'2', 'todo: '||current_timestamp;
?column?|?column? |
--------|----------------------------------|
3|todo:2020-03-09 21:49:49.370621+08|
原文作者:SQL编程思想;如有侵权,请联系管理员删除。