oracle日期時間函式大全
oracle日期時間函式大全
year:
yy two digits 兩位年 顯示值:07
yyy three digits 三位年 顯示值:007
yyyy four digits 四位年 顯示值:2007
month:
mm number 兩位月 顯示值:11
mon abbreviated 字符集表示 顯示值:11月,若是英文版,顯示nov
month spelled out 字符集表示 顯示值:11月,若是英文版,顯示november
day:
dd number 當月第幾天 顯示值:02
ddd number 當年第幾天 顯示值:02
dy abbreviated 當周第幾天簡寫 顯示值:星期五,若是英文版,顯示fri
day spelled out 當周第幾天全寫 顯示值:星期五,若是英文版,顯示friday
ddspth spelled out, ordinal twelfth
hour:
hh two digits 12小時進製 顯示值:01
hh24 two digits 24小時進製 顯示值:13
minute:
mi two digits 60進製 顯示值:45
second:
ss two digits 60進製 顯示值:25
其它q digit 季度 顯示值:4
ww digit 當年第幾周 顯示值:44
w digit 當月第幾周 顯示值:1
24小時格式下時間範圍為: 0:00:00 - 23:59:59....
12小時格式下時間範圍為: 1:00:00 - 12:59:59 ....
1. 日期和字元轉換函式用法(to_date,to_char)
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowtime from dual; //日期轉化為字串
select to_char(sysdate,'yyyy') as nowyear from dual; //獲取時間的年
select to_char(sysdate,'mm') as nowmonth from dual; //獲取時間的月
select to_char(sysdate,'dd') as nowday from dual; //獲取時間的日
select to_char(sysdate,'hh24') as nowhour from dual; //獲取時間的時
select to_char(sysdate,'mi') as nowminute from dual; //獲取時間的分
select to_char(sysdate,'ss') as nowsecond from dual; //獲取時間的秒
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual
2. select to_char( to_date(222,'j'),'jsp') from dual
顯示two hundred twenty-two
3.求某天是星期幾
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
星期一
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','nls_date_language = american') from dual;
monday
設定日期語言
alter session set nls_date_language='american';
也可以這樣
to_date ('2002-08-26', 'yyyy-mm-dd', 'nls_date_language = american')
4. 兩個日期間的天數
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
5. 時間為null的用法
select id, active_date from table1
union
select 1, to_date(null) from dual;
注意要用to_date(null)
6.月份差
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
那麼12月31號中午12點之後和12月1號的12點之前是不包含在這個範圍之內的。
所以,當時間需要精確的時候,覺得to_char還是必要的
7. 日期格式衝突問題
輸入的格式要看你安裝的oracle字符集的型別, 比如: us7ascii, date格式的型別就是: '01-jan-01'
alter system set nls_date_language = american
alter session set nls_date_language = american
或者在to_date中寫
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','nls_date_language = american') from dual;
注意我這只是舉了nls_date_language,當然還有很多,
可檢視
select * from nls_session_parameters
select * from v$nls_parameters
8. select count(*)
from ( select rownum-1 rnum
from all_objects
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
02-01','yyyy-mm-dd')+1
) where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'd' )
not in ( '1', '7' )
查詢2002-02-28至2002-02-01間除星期一和七的天數
在前後分別呼叫dbms_utility.get_time, 讓後將結果相減(得到的是1/100秒, 而不是毫秒).
9. 查詢月份
select months_between(to_date('01-31-1999','mm-dd-yyyy'),to_date('12-31-1998','mm-dd-yyyy')) "months" from dual;
1 select months_between(to_date('02-01-1999','mm-dd-yyyy'),to_date('12-31-1998','mm-dd-yyyy')) "months" from dual;
1.03225806451613
10. next_day的用法
next_day(date, day)
monday-sunday, for format code day
mon-sun, for format code dy
1-7, for format code d
日期型別轉換
public static final int hours 0 public static final int minutes 1 將字串轉換成日期格式 param date param format return throws exception public static date parsed...
js日期型別轉換
日期型別轉換格式函式 date.prototype.format function dt if y test dt dt dt.replace regexp.1,this.getfullyear substr 4 regexp.1.length for var k in o if new regex...
Python 日期型別轉換
從資料庫中查詢出的日期格式是 fri 12 jul 2019 00 00 00 gmt 需要轉換成 2019 07 12 d fri 12 jul 2019 00 00 00 gmt gmt format a d b y h m s gmt date1 datetime.datetime.strpt...