数据库时区
修改
ALTER DATABASE SET TIME_ZONE = '-05:00';
ALTER DATABASE SET TIME_ZONE = dbtimezone;
ALTER DATABASE SET TIME_ZONE = local;
ALTER DATABASE SET TIME_ZONE = 'America/New_York';
验证
SELECT DBTIMEZONE FROM DUAL;
会话时区
ALTER SESSION SET TIME_ZONE = '-05:00';
ALTER SESSION SET TIME_ZONE = dbtimezone;
ALTER SESSION SET TIME_ZONE = local;
ALTER SESSION SET TIME_ZONE = 'America/New_York';
SELECT SESSIONTIMEZONE FROM DUAL;
函数
说明
CURRENT_DATE
语法:CURRENT_DATE()
说明:查询当前时间
current_date返回的是当前会话时间,而sysdate返回的是服务器时间。
current_date有时比sysdate快一秒,这可能是四舍五入的结果。
如果修改当前会话的时区,比如将中国的时区为东八区,修改为东九区,则current_date显示的时间为东九区时间,根据东加西减的原则,current_date应该比sysdate快一小时。
例句:
CURRENT_TIMESTAMP
语法:CURRENT_TIMESTAMP()
说明:以timestamp with time zone数据类型返回当前会话时区中的当前日期
例句:
LOCALTIMESTAMP
语法:LOCALTIMESTAMP()
说明:以本地timestamp数据类型返回当前会话时区中的当前日期
EXTRACT
语法:
EXTRACT (
{ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND }
| { TIMEZONE_HOUR | TIMEZONE_MINUTE }
| { TIMEZONE_REGION | TIMEZONE_ABBR }
FROM { date_value | interval_value } )
说明:
我们只可以从一个date类型中截取 year,month,day(date日期的格式为yyyy-mm-dd);
我们只可以从一个 timestamp with time zone 的数据类型中截取TIMEZONE_HOUR和TIMEZONE_MINUTE;
例一:
例二:
FROM_TZ
语法:FROM_TZ(x,time_zone)
说明:把指定的时间戳和日期转换为timestamp with time zone类型
TO_DSINTERVAL
语法:TO_DSINTERVAL(C)
说明:将符合特定格式的字符串C转换成INTERVALDAY TO SECOND类型的数据
TO_TIMESTAMP
语法:TO_TIMESTAMP(x[,format])
说明:把字串表达式X转换成timestamp类型可以使用format指定格式
TO_TIMESTAMP_TZ
语法:TO_TIMESTAMP_TZ(x[,format])
说明:把字串表达式X转换成timestamp with time zone类型可以使用format指定格式
TO_YMINTERVAL
语法:TO_YMINTERVAL(C)
说明:将符合特定格式的字符串C转换成INTERVALYEAR TO MONTH类型的数据
TZ_OFFSET
语法:TZ_OFFSET(time_zone)
说明:按照最小时哈分钟返回time_zone的偏置时间