亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

ORACLE單行函數與多行函數之四:日期函數示例

2024-08-29 13:57:41
字體:
來源:轉載
供稿:網友
實驗環境

BYS@bys1>select * from nls_session_parameters where parameter='NLS_DATE_FORMAT';
PARAMETER            VALUE
-------------------- ------------------------------
NLS_DATE_FORMAT      yyyy/mm/dd hh24:mi:ss

BYS@bys1>show parameter nls_lang
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------

nls_language                         string      AMERICAN

 

1.直接使用SYSDATE加減數字來操作日期

日期+或-1,都代表加減一天的時間;而如果是一小時或幾分鐘這種,可以用天/小時這種方法。

如下面語句,1小時是1/24;5分鐘是1/24/12。86400:1天=24小時=24*60*60=86400秒

BYS@bys1>select sysdate+365,sysdate-1,sysdate-3,sysdate-1/24,sysdate-1/24/12 from dual;
SYSDATE+365         SYSDATE-1           SYSDATE-3           SYSDATE-1/24        SYSDATE-1/24/12
------------------- ------------------- ------------------- ------------------- -------------------

2014/11/02 19:26:15 2013/11/01 19:26:152013/10/30 19:26:15 2013/11/0218:26:15 2013/11/0219:21:15

2.TIMESTAMP 記錄了年、月、日、時、分、秒和納秒

SYSTIMESTAMP返回的是TIMESTAMP WITH TIME ZONE 類型的數據。+08:00表示當前是東八區。
BYS@bys1>select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
02-NOV-13 09.08.04.390741 PM +08:00
timestamp的顯示格式不同于SYSDATE,要重新指定。
BYS@bys1>alter session set nls_timestamp_format='yyyy-mm-dd hh24:mi:ss.ff';
Session altered.

BYS@bys1>select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
02-NOV-13 09.11.19.258161 PM +08:00

表示TIMESTAMP的方法:
–to_timestamp('2013-02-09 23:59:59.000','yyyy-mm-dd hh24:mi:ss.ff')
–timestamp '2013-04-05 13:48:00.123456789'
–to_timestamp中的分隔符可以更換, timestamp中的日期分隔符必須是-,時間必須是:,秒后面必須跟上.
–timestamp可以精確表示到毫秒、微秒甚至納秒級別
轉換時未指定值時的默認值:年:同SYSDATE里的年;月:同SYSDATE里的月;日:1號;時分秒和納秒:均為0
BYS@bys1>col a3 for a30
BYS@bys1>col a2 for a30
BYS@bys1>col a1 for a30
BYS@bys1>select to_timestamp('05 13','YY HH24') as a1,to_timestamp('05 13','mm mi') as a2,to_timestamp('05 13','dd ss') as a3 from dual;
A1                             A2                             A3
------------------------------ ------------------------------ ------------------------------
2005-11-01 13:00:00.000000000  2013-05-01 00:13:00.000000000  2013-11-05 00:00:13.000000000
關于微秒的指定方式:FF5表示給的時間戳可以有不超過5位的微秒。如果時間戳微秒有3位,指定轉換為FF2,則報錯。

同時在秒后最多只能指定9位。
BYS@bys1>select to_timestamp('05 13:48:22.778','DD HH24:MI:SS.FF5') from dual;
TO_TIMESTAMP('0513:48:22.778','DDHH24:MI:SS.FF5')
---------------------------------------------------------------------------
2013-11-05 13:48:22.778000000

要注意

BYS@bys1>select to_timestamp('05 13:48:22.778','DD HH24:MI:SS.FF2') from dual;
select to_timestamp('05 13:48:22.778','DD HH24:MI:SS.FF2') from dual
                    *
ERROR at line 1:
ORA-01880: the fractional seconds must be between 0 and 999999999

BYS@bys1>select to_timestamp('05 13:48:22.123456789','DD HH24:MI:SS.FF9') from dual;
TO_TIMESTAMP('0513:48:22.123456789','DDHH24:MI:SS.FF9')
---------------------------------------------------------------------------
2013-11-05 13:48:22.123456789
BYS@bys1>select to_timestamp('05 13:48:22.1234567890','DD HH24:MI:SS.FF9') from dual;
select to_timestamp('05 13:48:22.1234567890','DD HH24:MI:SS.FF9') from dual
                    *
ERROR at line 1:
ORA-01830: date format picture ends before converting entire input string
BYS@bys1>select to_timestamp('05 13:48:22.1234567890','DD HH24:MI:SS.FF10') from dual;
select to_timestamp('05 13:48:22.1234567890','DD HH24:MI:SS.FF10') from dual
                                             *
ERROR at line 1:
ORA-01821: date format not recognized

3.date函數只可以表示日期,不可以表示時間。在下面4中有應用示例。

默認值:年:同SYSDATE里的年;月:同SYSDATE里的月;日:1號;時分秒:均為0

4.判斷指定日期是否是某一天的。to_date及date中如果只指定日期未指定時間,默認是0點0分0秒。即前一天23:59:59的下一秒。

注意BETWEEN AND 相當于大于等于和小于等于。所以屬于某一天,嚴格來說應該是從當天0點的0秒到 當天23:59:59秒。1天除以86400即1秒

BYS@bys1> select 'TRUE' from dual where to_date('2013-11-02 21:48:22','YYYY-MM-DD HH24:MI:SS') between date'2013-11-01' and date'2013-11-06'-1/86400;

'TRU
----
TRUE

BYS@bys1>select 'TRUE' from dual where to_date('2013/11/02 21:45:43','YYYY-MM-DD HH24:MI:SS') between to_date('2013-11-02','yyyy-mm-dd') and  to_date('2013-11-03','yyyy-mm-dd hh24:mi:ss')-1/86400;

'TRU
----
TRUE
也可以用to_date對日期進行顯式轉換。
select 'TRUE' from dual where to_date('2013/11/02 21:45:43','YYYY-MM-DD HH24:MI:SS') between to_date('2013-11-02','yyyy-mm-dd') and  to_date('2013-11-03','yyyy-mm-dd hh24:mi:ss')-1/86400;
 
'TRUE'
------
TRUE

注意BETWEEN AND 相當于大于等于和小于等于

BYS@bys1> select 'TRUE' from dual where to_date('2013/11/02 21:45:43','YYYY-MM-DD HH24:MI:SS') >= date'2013-11-02' and to_date('2013/11/02 21:45:43','YYYY-MM-DD HH24:MI:SS') <= date'2013-11-03'-1/86400;
'TRU
----
TRUE
其實也可以用小于11月3號來表示小于等于11月2號的23:59:59秒。

BYS@bys1> select 'TRUE' from dual where to_date('2013/11/02 23:59:59','YYYY-MM-DD HH24:MI:SS') >= date'2013-11-02' and to_date('2013/11/02 23:59:59','YYYY-MM-DD HH24:MI:SS') < date'2013-11-03';
'TRU
----
TRUE
 

5.MONTHS_BETWEEN(a,b):表示a和b兩個日期的月份之差,是a-b,如果a日期比b晚,即比b大,則為正數;反之,為負數。

BYS@bys1>Select EMPNO,HIREDATE,MONTHS_BETWEEN(Sysdate,HIREDATE)/12 dday,sysdate From EMP where rownum<3;
     EMPNO HIREDATE                  DDAY SYSDATE
---------- ------------------- ---------- -------------------
      7369 1980/12/17 00:00:00 32.8784294 2013/11/02 18:37:05
      7499 1981/02/20 00:00:00 32.7036983 2013/11/02 18:37:05
BYS@bys1>select months_between(sysdate,to_date('2011/11/11 11:11:11','yyyy-mm-dd hh24:mi:ss')) as dday from dual;
      DDAY
----------
23.7196307
BYS@bys1>select months_between(to_date('2011/11/11 11:11:11','yyyy-mm-dd hh24:mi:ss'),sysdate) as dday from dual;
      DDAY
----------
-23.719639

6.ADD_MONTHS:表示給指定的日期加一個月數,即N個月后的日期。如果當前日期加上指定月數超過一年,則年份也自動增加。

BYS@bys1>select add_months(sysdate,1),add_months(sysdate,4) from dual;
ADD_MONTHS(SYSDATE, ADD_MONTHS(SYSDATE,
------------------- -------------------

2013/12/02 18:39:23 2014/03/02 18:39:23

 

7.NEXT_DAY:表示以當前時間為基準,下一個"目標日"的日期

BYS@bys1>select next_day(sysdate,'sunday'),next_day(sysdate,'tuesday') from dual;
NEXT_DAY(SYSDATE,'S NEXT_DAY(SYSDATE,'T
------------------- -------------------

2013/11/03 19:34:20 2013/11/05 19:34:20

 

8.LAST_DAY:計算當前日期的最后一天,即當月最后一天。

BYS@bys1>select last_day(sysdate) from dual;
LAST_DAY(SYSDATE)
-------------------

2013/11/30 18:43:16

 

9.使用ROUND:對日期進行四舍五入

只能對年、月、日、時、分進行四舍五入;不能操作秒。
BYS@bys1>select round(sysdate,'yy') as year,round(sysdate,'mm') as month,round(sysdate,'dd') as day,round(sysdate,'hh') as hour,round(sysdate,'hh24') as hour24,round(sysdate,'mi') as minutes  from dual;
YEAR                MONTH               DAY                 HOUR                HOUR24              MINUTES
------------------- ------------------- ------------------- ------------------- ------------------- -------------------
2014/01/01 00:00:00 2013/11/01 00:00:00 2013/11/03 00:00:00 2013/11/02 19:00:00 2013/11/02 19:00:00 2013/11/02 18:59:00
BYS@bys1> select round(sysdate,'ss') as sss from dual;
 select round(sysdate,'ss') as sss from dual
                      *
ERROR at line 1:

ORA-01899: bad precision specifier

 

10.使用TRUNC:對日期進行截取

BYS@bys1>set linesize 200
BYS@bys1>select trunc(sysdate,'yy') as year,trunc(sysdate,'mm') as month,trunc(sysdate,'dd') as day,trunc(sysdate,'hh') as hour,trunc(sysdate,'hh24') as hour24,trunc(sysdate,'mi') as minutes  from dual;
YEAR                MONTH               DAY                 HOUR                HOUR24              MINUTES
------------------- ------------------- ------------------- ------------------- ------------------- -------------------
2013/01/01 00:00:00 2013/11/01 00:00:00 2013/11/02 00:00:00 2013/11/02 18:00:00 2013/11/02 18:00:00 2013/11/02 18:52:00
只能截取年、月、日、時、分;不能截取秒。
BYS@bys1> select trunc(sysdate,'ss') as sss from dual;
 select trunc(sysdate,'ss') as sss from dual
                      *
ERROR at line 1:
ORA-01899: bad precision specifier
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品中文在线观看| 成人免费淫片视频软件| 日本一区二区不卡| 亚洲自拍另类欧美丝袜| 91九色国产视频| 奇门遁甲1982国语版免费观看高清| 亚洲精品国产美女| 久久久久亚洲精品成人网小说| 欧美成人激情视频| 国产精品久久久久久久天堂| 国产99视频精品免视看7| 欧美黑人一区二区三区| 国产精品一久久香蕉国产线看观看| 日韩视频在线免费| 久久久久久久国产| 色老头一区二区三区| 欧美福利在线观看| 亚洲精品免费在线视频| 久久久久久久97| 欧美日韩国产第一页| 国产成人一区二区三区电影| 91精品视频大全| 国产亚洲精品激情久久| 精品人伦一区二区三区蜜桃免费| 日本不卡高字幕在线2019| 免费91在线视频| 国产一区香蕉久久| 色综合影院在线| 91国自产精品中文字幕亚洲| 尤物yw午夜国产精品视频明星| 日韩成人激情视频| 亚洲欧美日韩一区二区在线| 日本一区二区在线播放| 日韩精品极品视频免费观看| 亚洲黄色成人网| 欧美国产日韩一区二区在线观看| 国产一区二区三区精品久久久| 永久免费看mv网站入口亚洲| 欧美日韩国产va另类| 在线成人激情黄色| 久久精品国产一区| 红桃视频成人在线观看| 欧美日韩国产二区| 国产啪精品视频| 97精品欧美一区二区三区| 精品国产视频在线| 国产精自产拍久久久久久| 欧美成人精品一区二区三区| 久久久欧美一区二区| 久久亚洲私人国产精品va| 亚洲精品www久久久| 亚洲第一区在线| 日韩精品在线免费播放| 亚洲无av在线中文字幕| 日韩av影视综合网| 亚洲国产精品成人一区二区| 尤物九九久久国产精品的特点| 国产精品第1页| 日本中文字幕不卡免费| 国产精品久久久精品| 亚洲色在线视频| 亚洲一区制服诱惑| 日韩欧美国产中文字幕| 欧美视频免费在线观看| 91精品国产99| 亚洲天堂免费观看| 综合网中文字幕| 日韩电视剧免费观看网站| 国产精品嫩草影院一区二区| 欧美做爰性生交视频| 国产精品久久精品| 久久天天躁狠狠躁夜夜躁2014| 国产欧美在线视频| 亚洲成人a**站| 亚州欧美日韩中文视频| 久久天天躁狠狠躁夜夜躁| 国产精品海角社区在线观看| 欧美性xxxxxxx| 亚洲免费福利视频| 久久精品影视伊人网| 91精品在线一区| 欧美在线视频一二三| 少妇激情综合网| 国产精品成人av性教育| 亚洲香蕉av在线一区二区三区| 久久视频精品在线| 久久成人免费视频| 九九热这里只有在线精品视| 自拍视频国产精品| 日韩有码在线播放| 亚洲专区国产精品| 国产精品女视频| 亚洲欧美日韩在线一区| 国产成人福利夜色影视| 亚洲一区亚洲二区| 国产成人激情视频| 精品久久久香蕉免费精品视频| 久久色精品视频| 91精品国产高清久久久久久久久| 欧美精品在线免费播放| 国产视频精品免费播放| 91精品久久久久久久久久久| 亚洲永久免费观看| 亚洲xxxx在线| 91久久精品国产91性色| 亚洲第一偷拍网| 国产成人亚洲精品| 欧美日韩国产限制| 国产精品揄拍一区二区| 欧美成人精品在线视频| 亚洲成人黄色网址| 久久亚洲精品中文字幕冲田杏梨| 欧美在线www| 国产成人亚洲综合91| 亚洲理论在线a中文字幕| 欧美裸身视频免费观看| 欧美亚洲另类激情另类| 亚洲影院高清在线| 国产精品免费在线免费| 2019最新中文字幕| 日韩av一区二区在线观看| 欧美黑人国产人伦爽爽爽| 亚洲片在线资源| 日韩精品中文字幕在线播放| 国产日韩欧美一二三区| 51视频国产精品一区二区| 久久综合伊人77777| 欧美猛交ⅹxxx乱大交视频| 国产精品入口免费视频一| 日本韩国欧美精品大片卡二| 亚洲第一区中文字幕| 91国产精品视频在线| 伊人伊成久久人综合网小说| 亚洲国产精品人久久电影| 国产精品视频免费在线| 亚洲第一免费播放区| 久久综合久久美利坚合众国| 欧美激情第一页xxx| 亚洲第一福利网| 亚洲国产日韩欧美综合久久| 精品一区二区三区电影| 欧美日韩色婷婷| 日韩专区在线观看| 国产精品v片在线观看不卡| 日韩精品视频免费专区在线播放| 欧美多人乱p欧美4p久久| 色多多国产成人永久免费网站| 欧美精品激情在线| 亚洲丁香婷深爱综合| 国产最新精品视频| 国产精品白嫩初高中害羞小美女| 精品久久久国产| 亚洲天堂av在线免费观看| 久久久综合免费视频| 亚洲自拍偷拍网址| 国产精品人成电影在线观看| 国产精品成人av在线| 日韩高清电影好看的电视剧电影| 日韩电影免费观看在线观看| 亚洲一区二区三区四区在线播放| 亚洲人成免费电影| 国产精品91免费在线| 国产欧美一区二区三区在线看| 91日本视频在线|