赞
踩
timestamp:时间戳
格式为1997-01-01 00:00:00,January 8 04:05:06 1999 PST
date:日期
有1997-01-01,19970101,1/1/1997,Jan-1-1997等多种格式
time:时间
有12:00:00,120000,12:00,8:00 AM,8:00 PM等格式
interval:时间间隔
格式为 1 year 2 months 3 days 4 hours 5 minutes 6 seconds
缩写 | 含义 |
---|---|
Y | Years |
M | Months (in the date part) |
W | Weeks |
D | Days |
H | Hours |
M | Minutes (in the time part) |
S | Seconds |
now():获取当前完整时间
current_timestamp:当前事务开始时的时间戳,同 now() 函数等效
current_date:获取当前日期
current_time:获取当前时间
localtime:当前时间
localtimestamp:当前事务开始时的时间戳
SELECT now(),current_timestamp,current_date,current_time,localtime,localtimestamp;
结果:
transaction_timestamp():它等同于CURRENT_TIMESTAMP,但命名是为了清楚地反映它返回的内容.
statement_timestamp():它返回当前语句的开始时间.
clock_timestamp():它返回实际的当前时间,因此即使在单个SQL命令中它的值也会发生变化.
timeofday():它返回实际的当前时间,但是作为带格式的文本字符串而不是带有时区值的时间戳.
select transaction_timestamp(),statement_timestamp(),clock_timestamp(),timeofday();
结果:
age(timestamp, timestamp):计算两个时间差
age(timestamp):只输入一个参数,计算current_date与入参的时间间隔。
select age(timestamp '2021-04-10', timestamp '2021-04-1'),age(timestamp '2021-04-1');
结果:
EXTRACT(field FROM source)函数:field 表示取的时间对象,source 表示取的日期来源,类型为 timestamp、time 或 interval。
对象 | 解释 |
---|---|
century | 世纪 |
year | 年 |
decade | 得到年份除10的值 |
millennium | 得到第几个千年,0-1000第一个,1001-2000第二个,2001-3000第三个 |
quarter | 季度 |
month | 月份 |
week | 返回当前是几年的第几个周 |
dow | 返回当前日期是周几,周日:0,周一:1,周二:2,… |
day | 本月的第几天 |
doy | 本年的第几天 |
hour | 小时 |
min | 得到时间中的分钟 |
sec | 返回时间中的秒 |
epoch | 获取到从1970-01-01 00:00:00 UTC这个Linux纪元年的开始时间到给定的日期或者时间戳参数的时间之间相隔的秒数 |
SELECT EXTRACT
( century FROM now( ) ),
EXTRACT ( YEAR FROM now( ) ),
EXTRACT ( decade FROM now( ) ),
EXTRACT ( millennium FROM now( ) ),
EXTRACT ( quarter FROM now( ) ),
EXTRACT ( MONTH FROM now( ) ),
EXTRACT ( week FROM now( ) ),
EXTRACT ( dow FROM now( ) ),
EXTRACT ( DAY FROM now( ) ),
EXTRACT ( doy FROM now( ) ),
EXTRACT ( HOUR FROM now( ) ),
EXTRACT ( MIN FROM now( ) ),
EXTRACT ( sec FROM now( ) ),
EXTRACT ( epoch FROM now( ) );
结果:
date_part(text, timestamp):获取子域(等效于extract),其中text可以为year,month,day,hour,minute,second等
date_part(text, interval):获取子域(等效于extract),其中text可以为year,month,day,hour,minute,second等
select date_part('hour', timestamp '2001-02-16 20:38:40'),date_part('month', interval '2 years 3 months');
结果:
date_trunc(text, timestamp):截断成指定的精度,指定精度后面的子域用0补充.其中text可以为year,month,day,hour,minute,second等
date_trunc(text, interval):截取指定的精度,指定精度后面的子域用0补充.其中text可以为year,month,day,hour,minute,second等
select date_trunc('hour', timestamp '2001-02-16 20:38:40'),date_trunc('hour', interval '2 days 3 hours 40 minutes');
结果:
isfinite(source):判断是否无穷大无穷小,source表示取的日期来源,类型为date、timestamp 或 interval
select isfinite(date'infinity'),isfinite(date'2013-1-1'),isfinite(timestamp '2001-02-16 21:28:30'),isfinite(interval '4 hours');
结果:
justify_days(interval):按照每月 30 天调整时间间隔
justify_hours(interval):按照每天 24 小时调整时间间隔
justify_interval(interval):使用justify_days和justify_hours调整时间间隔的同时进行正负号调整
select justify_days(interval '35 days'),justify_hours(interval '27 hours'),justify_interval(interval '1 mon -1 hour');
结果:
make_timestamp(year int, month int, day int, hour int, min int, sec double precision):从年、月、日、小时、分钟和秒字段中创建时间戳
select make_timestamp(2013, 7, 15, 8, 15, 23.5);
结果:
make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ]):从年、月、日、小时、分钟和秒字段中创建带有时区的时间戳。 没有指定timezone时,使用当前的时区。
select make_timestamptz(2013, 7, 15, 8, 15, 23.5);
结果:
make_date(year int, month int, day int):为年、月和日字段创建日期
select make_date(2013, 7, 15);
结果:
make_time(hour int, min int, sec double precision):从小时、分钟和秒字段中创建时间
select make_time(8, 15, 23.5);
结果:
make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0):从年、月、周、天、小时、分钟和秒字段中创建间隔
select make_interval(days := 10);
结果:
AT TIME ZONE:提供时区转换功能,有些时候,时区转换对于特定时间在不同时区显示特别有用。
SELECT now(),now() AT TIME ZONE 'GMT';
结果:
interval 可以不写
SELECT
now( ) + INTERVAL '2 years',--两年后
now( ) + INTERVAL '1 month',--一个月后
now( ) - INTERVAL '3 week',--三周前
now( ) + '10 min';--十分钟后
结果:
SELECT DATE '2001-09-28' + INTEGER '7', DATE'2001-09-28' + INTERVAL '1 hour', DATE'2001-09-28' + TIME'03:00', INTERVAL '1 day' + INTERVAL '1 hour', TIMESTAMP '2001-09-28 01:00' + INTERVAL '23 hours', TIME'01:00' + INTERVAL '3 hours', - INTERVAL '23 hours', DATE'2001-10-01' - DATE'2001-09-28', DATE'2001-10-01' - INTEGER '7', DATE'2001-09-28' - INTERVAL '1 hour', TIME'05:00' - TIME'03:00', TIME'05:00' - INTERVAL '2 hours', TIMESTAMP '2001-09-28 23:00' - INTERVAL '23 hours', INTERVAL '1 day' - INTERVAL '1 hour', TIMESTAMP '2001-09-29 03:00' - TIMESTAMP '2001-09-27 12:00', 900 * INTERVAL '1 second', 21 * INTERVAL '1 day', DOUBLE PRECISION '3.5' * INTERVAL '1 hour', INTERVAL '1 hour' / DOUBLE PRECISION '1.5';
今人不见古时月,今月曾经照古人。____李白《把酒问月·故人贾淳令予问之》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。