先看一下to_date()
日期到字符
select sysdate,to_date('2018-3-20','yyyy-mm-dd') from dual;
select sysdate,to_date('2018-3-20','yyyy.mm.dd') from dual;
select sysdate,to_date('2018-3-20','yyyy/mm/dd') from dual;
select sysdate,to_date('2018-3-20','yyyy-mm-dd hh24:mi:ss') from dual;
select sysdate,to_date('2018.3.20','yyyy-mm-dd') from dual;
select sysdate,to_date('2018/3/20','yyyy-mm-dd') from dual;
select sysdate,to_date('20180320','yyyy-mm-dd') from dual;
這幾個語句輸出結(jié)果都是
觀察發(fā)現(xiàn)据过,無論是日期是什么格式,還是’yyyy-dd-mm’是什么格式,其結(jié)果都和系統(tǒng)日期格式保持一致差购。得到的時間為2018/3/21 00:00:00
驗證一下,看看時分秒格式歧沪,結(jié)果還是和系統(tǒng)時間格式一致歹撒。
select sysdate,
to_date(‘2018-3-21 10 17 14’,’yyyy-mm-dd hh24:mi:ss’) from dual;
輸出結(jié)果:2018/3/21/周三22:17:14
2.to_char()
將時間日期按照指定的格式輸出,得到的是字符串诊胞,而非date類型暖夭。
select sysdate,to_char(sysdate,'yyyy-mm-dd')from dual;
select sysdate,to_char(sysdate,'yyyy/mm/dd')from dual;
select sysdate,to_char(sysdate,'yyyymmdd')from dual;
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual;
輸出結(jié)果
2018/3/21/周三 10:19:25 2018-03-21
2018/3/21/周三 10:19:25 2018/03/21
2018/3/21/周三 10:19:25 20180321
2018/3/21/周三 10:19:25 2018-03-21 10:22:57 `
用to_char()可以得到日期中的年、月撵孤、日迈着、時、分
select sysdate,to_char(sysdate,'yyyy')from dual;
select sysdate,to_char(sysdate,'mm')from dual;
select sysdate,to_char(sysdate,'hh24')from dual;
select sysdate,to_char(sysdate,'mi')from dual;
輸出結(jié)果是
2018/3/21/周三 10:25:57 2018
2018/3/21/周三 10:25:57 03
2018/3/21/周三 10:25:57 10
2018/3/21/周三 10:25:57 25
另外to_char可以截取年份邪码,計算年齡等
查詢Student表中每個學生的姓名和年齡裕菠。
SELECT SNAME,
EXTRACT (YEAR FROM SYSDATE)- EXTRACT (YEAR FROM S.SBIRTHDAY) AGE
FROM STUDENT S;--取出當前時間的年份-出生日期的年份即年齡AGE
SELECT SNAME,
TO_CHAR(SYSDATE,'YYYY') - TO_CHAR(SBIRTHDAY,'YYYY') AGE
FROM STUDENT;
查詢當前日期和給定日期是星期幾
select to_char(sysdate,'day') from dual;--結(jié)果為星期三
select to_char(to_date('2018-3-20','yyyy/mm/dd'),'day')
from dual;--結(jié)果星期二