PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 9. �����Ͳ����� | Fast Forward | Next |
Table 9-26 ��ʾ�� PostgreSQL ��������ڴ�������/ʱ����ֵ�ĺ��������һ����������ϸ�ڡ� Table 9-25 ��ʾ�˻������������� ��+��* �ȵȣ�����Ϊ�� �����ʽ����صĺ��������Բο�Section 9.8�� ��Ӧ�ú���Ϥ���� Section 8.5 ������/ʱ���������͵ı���֪ʶ��
�������������ĺ����Ͳ��������յ�time����timestamp����ʵ���϶��������ֿ��ܣ� һ���ǽ���time with time zone �� timestamp with time zone�� ����һ����time without time zone ���� timestamp without time zone�� ���ڼ��ǣ���Щ����û�ж�����ʾ���������У�+ �� * �����������Կɽ����IJ������Է�ʽ���ڵ� �����磬date + integer �� integer + date��������ֻ��ʾ�������Ľ������������е�һ����
Table 9-25. ����/ʱ�������
������ | ���� | ��� |
---|---|---|
+ | date '2001-09-28' + integer '7' | date '2001-10-05' |
+ | date '2001-09-28' + interval '1 hour' | timestamp '2001-09-28 01:00' |
+ | date '2001-09-28' + time '03:00' | timestamp '2001-09-28 03:00' |
+ | interval '1 day' + interval '1 hour' | interval '1 day 01:00' |
+ | timestamp '2001-09-28 01:00' + interval '23 hours' | timestamp '2001-09-29 00:00' |
+ | time '01:00' + interval '3 hours' | time '04:00' |
- | - interval '23 hours' | interval '-23:00' |
- | date '2001-10-01' - date '2001-09-28' | integer '3' |
- | date '2001-10-01' - integer '7' | date '2001-09-24' |
- | date '2001-09-28' - interval '1 hour' | timestamp '2001-09-27 23:00' |
- | time '05:00' - time '03:00' | interval '02:00' |
- | time '05:00' - interval '2 hours' | time '03:00' |
- | timestamp '2001-09-28 23:00' - interval '23 hours' | timestamp '2001-09-28 00:00' |
- | interval '1 day' - interval '1 hour' | interval '23:00' |
- | timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' | interval '1 day 15:00' |
* | interval '1 hour' * double precision '3.5' | interval '03:30' |
/ | interval '1 hour' / double precision '1.5' | interval '00:40' |
Table 9-26. ����/ʱ�亯��
���� | �������� | ���� | ���� | ��� |
---|---|---|---|---|
age(timestamp, timestamp) | interval | ��ȥ����������һ��ʹ���ꡢ�µ�"���Ż�"�Ľ�� | age('2001-04-10', timestamp '1957-06-13') | 43 years 9 mons 27 days |
age(timestamp) | interval | ��current_date��ȥ�õ�����ֵ | age(timestamp '1957-06-13') | 43 years 8 mons 3 days |
current_date | date | ��������ڣ��� Section 9.9.4 | ||
current_time | time with time zone | ���ڵ�ʱ�䣻�� Section 9.9.4 | ||
current_timestamp | timestamp with time zone | ���ں�ʱ�䣻�� Section 9.9.4 | ||
date_part(text, timestamp) | double precision | ��ȡ����(��Ч�� extract)���ּ� Section 9.9.1 | date_part('hour', timestamp '2001-02-16 20:38:40') | 20 |
date_part(text, interval) | double precision | ��ȡ����(��Ч�� extract)���ּ� Section 9.9.1 | date_part('month', interval '2 years 3 months') | 3 |
date_trunc(text, timestamp) | timestamp | �ضϳ�ָ���ľ��ȣ��ּ�Section 9.9.2 | date_trunc('hour', timestamp '2001-02-16 20:38:40') | 2001-02-16 20:00:00+00 |
extract(field from timestamp) | double precision | ��ȡ�����ּ� Section 9.9.1 | extract(hour from timestamp '2001-02-16 20:38:40') | 20 |
extract(field from interval) | double precision | ��ȡ�����ּ� Section 9.9.1 | extract(month from interval '2 years 3 months') | 3 |
isfinite(timestamp) | boolean | ��������ʱ���(������) | isfinite(timestamp '2001-02-16 21:28:30') | true |
isfinite(interval) | boolean | ��������ʱ���� | isfinite(interval '4 hours') | true |
localtime | time | ���յ�ʱ�䣻�� Section 9.9.4 | ||
localtimestamp | timestamp | ���ں�ʱ�䣻�� Section 9.9.4 | ||
now() | timestamp with time zone | ��ǰ�����ں�ʱ��(��Ч�� current_timestamp)����Section 9.9.4 | ||
timeofday() | text | ��ǰ���ں�ʱ�䣻��Section 9.9.4 |
������Щ�������⣬��֧�� SQL ������ OVERLAPS��
( start1, end1 ) OVERLAPS ( start2, end2 ) ( start1, length1 ) OVERLAPS ( start2, length2 )
������ʽ������ʱ���������ǵ��յ㶨�壩�ص���ʱ��������ֵ�� �յ������һ�����ڣ�ʱ�䣬����ʱ�����������������һ���������һ��ʱ������ ���ڣ�ʱ�䣬ʱ�����
SELECT (DATE '2001-02-16', DATE '2001-12-21') OVERLAPS (DATE '2001-10-30', DATE '2002-10-30'); Result: true SELECT (DATE '2001-02-16', INTERVAL '100 days') OVERLAPS (DATE '2001-10-30', DATE '2002-10-30'); Result: false
EXTRACT (field from source)
extract ����������/ʱ����ֵ���ȡ �����������Сʱ�ȡ�source ������һ������ timestamp��time������ interval ��ֵ���ʽ�� ������Ϊ date �ı��ʽ��ת��Ϊ timestamp�����Ҳ�����á��� field ��һ����ʶ�� �����ִ�����ָ����Դ�����г�ȡ������extract ������������Ϊdouble precision ����ֵ�� ������ֵ����Ч����������֡�
���͡�
SELECT EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13'); Result: 20 SELECT EXTRACT(CENTURY FROM TIMESTAMP '2001-02-16 20:38:40'); Result: 21
��һ�����ʹ� 0001-01-01 00:00:00 AD ��ʼ�� ������ʱ�����ǻ���֪�����ǵ�һ�����͡������������������ʹ�ø�����������Ĺ��ҡ� û�� 0 ���ͣ�����ֱ�Ӵӹ�Ԫǰ 1 ���͵���Ԫ 1 ���͡� �������Ϊ�����������ô��ѱ�Թ����������ʥ�˵ý��ã���ٸԣ��̻��ա�
PostgreSQL 8.0 ��ǰ�汾�ﲢ����ѭ���͵�ϰ�߱�ţ�ֻ�ǰ���ݳ��� 100��
(�·�)���������(1-31)
SELECT EXTRACT(DAY from TIMESTAMP '2001-02-16 20:38:40'); Result: 16
��������10
SELECT EXTRACT(DECADE from TIMESTAMP '2001-02-16 20:38:40'); Result: 200
ÿ�ܵ����ں�(0 - 6���������� 0) (������ timestamp)
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40'); Result: 5
��ע�� extract �����ڼ���ź� to_char �����IJ�ͬ��
һ��ĵڼ���(1 -365/366) (������ timestamp)
SELECT EXTRACT(DOY from TIMESTAMP '2001-02-16 20:38:40'); Result: 47
���� date �� timestamp ��ֵ���ԣ� ���� 1970-01-01 00:00:00 ����������(��������Ǹ�����)�� ���� interval ��ֵ���ԣ�����ʱ��������������
SELECT EXTRACT(EPOCH from TIMESTAMP '2001-02-16 20:38:40'); Result: 982352320 SELECT EXTRACT(EPOCH from INTERVAL '5 days 3 hours'); Result: 442800
�����ǰ� epoch ֵת����ʱ����ķ�����
SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720 * INTERVAL '1 second';
Сʱ�� (0 - 23)
SELECT EXTRACT(HOUR from TIMESTAMP '2001-02-16 20:38:40'); Result: 20
������С�����֣����� 1,000,000����ע��������ȫ�����롣
SELECT EXTRACT(MICROSECONDS from TIME '17:12:28.5'); Result: 28500000
ǧ�ꡣ
SELECT EXTRACT(MILLENNIUM from TIMESTAMP '2001-02-16 20:38:40'); Result: 3
20���ͣ�19xx�꣩���������ڵڶ���ǧ���������ǧ��� 2001 ��һ��һ�տ�ʼ��
PostgreSQL 8.0 ֮ǰ�İ汾������ѭǰ���ŵ�ϰ�ߣ�ֻ�Ƿ�����ݳ��� 1000��
������С�����֣����� 1000����ע���������������롣
SELECT EXTRACT(MILLISECONDS from TIME '17:12:28.5'); Result: 28500
������ (0 - 59)
SELECT EXTRACT(MINUTE from TIMESTAMP '2001-02-16 20:38:40'); Result: 38
���� timestamp ��ֵ������һ������·���(1 - 12)�� ���� interval ��ֵ�������µ���Ŀ��Ȼ��� 12 ȡģ(0 - 11)
SELECT EXTRACT(MONTH from TIMESTAMP '2001-02-16 20:38:40'); Result: 2 SELECT EXTRACT(MONTH from INTERVAL '2 years 3 months'); Result: 3 SELECT EXTRACT(MONTH from INTERVAL '2 years 13 months'); Result: 1
�������ڵĸ���ļ���(1 - 4)(������ timestamp)
SELECT EXTRACT(QUARTER from TIMESTAMP '2001-02-16 20:38:40'); Result: 1
������������ (0 - 59 [1])
SELECT EXTRACT(SECOND from TIMESTAMP '2001-02-16 20:38:40'); Result: 40 SELECT EXTRACT(SECOND from TIME '17:12:28.5'); Result: 28.5
�� UTC ��ʱ��ƫ�ƣ�����ǡ�������Ӧ UTC ���ߵ�ʱ����������Ӧ UTC ���ߵ�ʱ����
ʱ��ƫ�Ƶ�Сʱ���֡�
ʱ��ƫ�Ƶķ��Ӳ��֡�
���������ڵ�������ǵڼ��ܡ����ݶ��� (ISO 8601)�� һ��ĵ�һ�ܰ��������һ�����ա�(ISO-8601���ܴ�����һ��ʼ��) ���仰˵��һ��ĵ�һ���������ڵ�һ�ܡ���ֻ���� timestamp ��ֵ����
SELECT EXTRACT(WEEK from TIMESTAMP '2001-02-16 20:38:40'); Result: 7
�����Ҫ��ס����û�� 0 AD�����Դ� AD �����ȡ BC ��Ӧ��С��Щ��
SELECT EXTRACT(YEAR from TIMESTAMP '2001-02-16 20:38:40'); Result: 2001
extract ������Ҫ����;���������á� ����������ʾ������/ʱ����ֵ��ʽ�������� Section 9.8��
date_part �������ڴ�ͳ�� Ingres �����Ļ�����������(�� ������Ч�� SQL ������ extract)��
date_part('field', source)
��ע������� field ���������� һ���ִ�ֵ��������һ�����֡���Ч�� date_part ������ ������ extract ����һ���ġ�
SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40'); Result: 16 SELECT date_part('hour', INTERVAL '4 hours 3 minutes'); Result: 4
date_trunc �����ڸ����Ϻ����� ���ֵ� trunc �������ơ�
date_trunc('field', source)
source ������ timestamp ��ֵ���ʽ(���� date �� time ����ֵ���ֱ��Զ�ת����timestamp����interval)�� �� field ѡ��Ը�ʱ�����ֵ ѡ��ʲô���ľ��Ƚ��нض�)�� ���ص���ֵ�� timestamp ���ͻ���interval������С��ѡ���� ���ȵ�������Ϊ��(����һ����������ں��·���Ļ�)��
field ����Ч��ֵ�ǡ�
microseconds |
milliseconds |
second |
minute |
hour |
day |
week |
month |
year |
decade |
century |
millennium |
���ӣ�
SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40'); Result: 2001-02-16 20:00:00+00 SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40'); Result: 2001-01-01 00:00:00+00
AT TIME ZONE ���������ʱ���ת���ɲ�ͬ�� ʱ����Table 9-27 ��ʾ������塣
Table 9-27. AT TIME ZONE����
���ʽ | �������� | ���� |
---|---|---|
timestamp without time zone AT TIME ZONE zone | timestamp with time zone | �Ѹ���ʱ���ĵ���ʱ��ת���� UTC |
timestamp with time zone AT TIME ZONE zone | timestamp without time zone | �� UTC ת���ɸ���ʱ���ĵ���ʱ�� |
time with time zone AT TIME ZONE zone | time with time zone | ��ʱ��֮��ת������ʱ�� |
����Щ���ʽ�������Ҫ�� zone ��������Ϊ �ı��������磬'PST'������һ��ʱ���� �����磬INTERVAL '-08:00'���� ���ı�������£����õ�ʱ�������� Table B-4 ����ʾ�� ������֧�ָ�ͨ�õ� Table B-6 �����Щ������Ŀǰ��Щ��û��ʵ�֡���
���ӣ����豾��ʱ���� PST8PDT����
SELECT TIMESTAMP '2001-02-16 20:38:40' AT TIME ZONE 'MST'; Result: 2001-02-16 19:38:40-08 SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'MST'; Result: 2001-02-16 18:38:40
��һ�����ӽ���һ����ʱ����ʱ���Ȼ��������ͳ� MST ʱ�䣨UTC-7�� ���� UTC ʱ�����Ȼ�����ʱ��ת��Ϊ PST��UTC-8������ʾ�� �ڶ������ӽ���һ������Ϊ EST��UTC-5����ʱ�����Ȼ����� ת���� MST��UTC-7���ĵ���ʱ�䡣
����timezone(zone, timestamp) ��Ч�� SQL ���ݵĹ���timestamp AT TIME ZONE zone��
���ǿ���ʹ������ĺ�����ȡ��ǰ�����ں�/��ʱ���
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TIME ( precision ) CURRENT_TIMESTAMP ( precision ) LOCALTIME LOCALTIMESTAMP LOCALTIME ( precision ) LOCALTIMESTAMP ( precision )
CURRENT_TIME �� CURRENT_TIMESTAMP ����ʱ��ֵ�� LOCALTIME �� LOCALTIMESTAMP ����ֵû��ʱ��ֵ��
CURRENT_TIME �� CURRENT_TIMESTAMP�� LOCALTIME �� LOCALTIMESTAMP ������ѡ��ظ���һ�����Ȳ����� �þ��ȵ��½������������Ϊָ��С��λ�����û�о��Ȳ����� ���������ܵõ���ȫ�����ȡ�
ע��: �� PostgreSQL 7.2 ֮ǰû��ʵ�־��Ȳ����� ������Ǹ����������롣
һЩ���ӣ�
SELECT CURRENT_TIME; Result: 14:39:53.662522-05 SELECT CURRENT_DATE; Result: 2001-12-23 SELECT CURRENT_TIMESTAMP; Result: 2001-12-23 14:39:53.662522-05 SELECT CURRENT_TIMESTAMP(2); Result: 2001-12-23 14:39:53.66-05 SELECT LOCALTIMESTAMP; Result: 2001-12-23 14:39:53.662522
���� now() �Ǵ�ͳ�� PostgreSQL �� CURRENT_TIMESTAMP �ĵ�Ч�
����һ�� timeofday() ������������ʷԭ�� ������һ���ִ��������� timestamp ֵ��
SELECT timeofday(); Result: Sat Feb 17 19:07:32.000126 2001 EST
����һ�������Ѵ�ң��Ǿ��� CURRENT_TIMESTAMP ����صĺ�����ʱ�䵱����ǰ����Ŀ�ʼ���أ����������е�ʱ�� ���ǵ���ֵ�����ı䡣 ������Ϊ����һ�����ԣ�Ŀ����Ϊ������һ��������"��ǰ" ʱ����������ĸ��������ͬһ��������ö���Ŀ�����ͬ����ʱ����� �� timeofday() ���ص�ǰ��ʵ��ʱ�䣬������������Ĵ����ǰ����
ע��: ����������ݿ�ϵͳ��Ƶ���ظ�����Щ��ֵ��
��������/ʱ�����ͻ�����������ı�ֵ now�� ����������ǰ�����ں�ʱ�䡣��ˣ�����������������ͬ�Ľ����
SELECT CURRENT_TIMESTAMP; SELECT now(); SELECT TIMESTAMP 'now';
��ʾ: �ڴ���������һ��DEFAULTֵ��ʱ�����Dz������õ�������ʽ�ġ� ��Ϊϵͳ���ڷ������������ʱ��� now ת���� һ�� timestamp���������Ҫȱʡֵ��ʱ�� �ͻ�ʹ�ô������ʱ��! ��ͷ������ʽҪ��ʵ��ʹ��ȱʡֵ��ʱ��ż��㣬 ��Ϊ�����Ǻ������á�������ǿ��Ը�������ʱ���е�ʱ�� ��Ҫ��ȱʡ��Ϊ��
[1] | �������ϵͳʵ�������룬 ��ô������ 60 |