部分日期时间函数

日期时间函数

SELECT DBTIOMEZONE FROM DUAL;查看数据库时区

SELECT SYSTIMSTAMP FROM DUAL;查看本地timezone

SELECT  SESSIONTIMEZONE FROM DUAL;查看会话时区

 

TIMES TAMP 无时区概念,存什么时间进去,取出来就是什么时间

TIMES TAMP 时间和时区都被存下来,取数据时能获得当初存储的时间和时区

TIMES TAMP WITH LOCAL TIME ZONE把输入的时间按database timezone的时区转换后存储时间,取数据时按用户SESSION的时区返回给用户,取出来的时间不带时区格式

查看三种时间戳格式

CREATE TABLE T31(

TIMEDATE DATE,

TIMEDATE2 TIMESTAMP,

TIMEDATE3 TIMESTAMP WITH TIME ZONE,

TIMEDATE4 TIMESTAMP WITH LOCAL TIME ZONE

);

INSERT INTO T31 VALUES(SYSDATE,SYSDATE,SYSDATE,SYSDATE);

SELECT * FROM T31;

SELECT SESSIONTIMEZONE,CURRENT_DATE FROM DUAL;--当前时间

SELECT SESSIONTIMEZONE,CURRENT_TIMESTAMP FROM DUAL;--当前时间戳

SELECT SESSIONTIMEZONE,LOCALTIMESTAMP FROM DUAL;--本地时间戳

ALTER SESSION

SET NLS_DATE_FORMAT = ‘DD-MON-YYYY HH24:MI:SS’;

ALTER SESSION SET TIME_ZONE=’-5:00’; 改变会话时区

ALTER TABLE EMPLOYEES

MODIFY HIRE_DATE TIMESTAMP;--把HIRE_DATE改为时间戳格式

SELECT HIRE_DATE

FROM EMPLOYEES;

CREATE TABLE WEB_ORDERS

(ORDER_DATE TIMESTAMP WITH TIME ZONE,DELIVERY_TIME TIMESTAMP WITH LOCAL TIME ZONE);

--创建Time zone类型字段

--创建local time zone类型字段

ALTER SESSION SET TIME_ZONE=’-6:00’;

INSERT INTO WEB_ORDERS VALUES --插入时间数据

(SYSDATE,SYSDATE);

SELECT * FROM WEB_ORDERS; --查看数据

SELECT T.EMPNO,T.ENAME

(SYSDATE-T.HIREDATE) YEAR TO MONTH AS HIRE_YEAR

FROM SCOTT.EMP T; --将入职年份显示为多少年多少月显示的格式

INTERVAL 用法

CREATE TABLE WARRANTY

(PROD_ID NUMBER,WARRANTY_TIME INTERVAL YEAR(3) TO MONTH);

INSERT INTO WARRANTY VALUES(123,INTERVAL’9’MONTH)

SELECT * FROM WARRANTY;

函数TZ_OFFSET显示时区

SELECT TZ_OFFSET(‘US/Eastern’) FROM DUAL查看时区

SELECT TZNAME,TZABBREV,TZ_OFFSET(TZNAME) FROM V$TIMEZONE_NAMES;--查询视图全世界时区名称及时区

EXTRACT 抽取

从SYSDATE显示年份.

SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;--抽取(只显示)年份

显示MANAGER_ID为100的员工的HIRE_DATE的月份

SELECT LAST_NAME,HIRE_DATE,

EXTRACT(MONTH FROM HIRE_DATE)--抽取月份

FROM EMPLOYEES

WHERE MANAGER_ID=100;

FROM_TZ

显示TIMESTAMP值‘2000-03-28  08:00:00’时区为‘Australia/North’(澳大利亚/北),TIMESTAMP WITH TIME ZONE值

SELECT FROM_TZ(TIMESTAMP ‘2000-07-12 08:00:00’,’Austrailia/North’)FROM DUAL;

TO_TIMESTAMP

显示字符串’2007-03-06 11:00:00’的TIMESTAMP值

SELECT TO_TIMESTAMP (‘2007-03-06 11:00:00’,’YYYY-MM-DD HH:MI:SS’)FROM DUAL;

TO_YMINTERVAL

显示DEPARTMENT_ID为20的员工的雇佣日期一年零两个月后的日期

SELECT HIRE_DATE,

HIRE_DATE+TO_YMINTERVAL(‘01-02’) AS

HIRE_DATE_YMINTERVAL

FROM EMPLOYEES

WHERE DEPARTMENT_ID=20;

原文地址:https://www.cnblogs.com/kawashibara/p/8963249.html