SQL函式之日期函式
1. 使用 TO_CHAR() 和 TO_DATE() 轉換時間值
TO_CHAR(x[,format]) 將x轉換為字串,該函式還可以為x提供可選引數format
TO_DATE(x[,format]) 將字串x轉換為DATE型別,該函式也提供了可選引數format
1.1 使用TO_CHAR() 將時間值轉換為字串
select to_char(sysdate,'MONTH DD,YYYY,HH24:MI:SS') from dual;
1.2 使用TO_DATE() 將字串轉換為時間值
select to_date('04,JUL-2014'),to_date('04-JUL-12') from dual; --(未指定格式,採用預設日期格式)
select to_date('2014-09-13','YYYY-MM-DD') from dual; (正確)
select to_date('2014-09-13','Y-MM-DD') from dual; (錯誤)
故:FORMAT的作用是用於格式化傳遞的字串。
select to_date('11.1.14','MM.DD.YY') from dual;
2. Oracle 對年份的處理
注:應該始終使用完整的4位年份,這樣,就不會對到底指哪一年產生混淆
3. 使用時間值函式
4. 使用時區
時區是當地時間與英格蘭格林威治時間的時差(UTC)
時間也可以使用地理區域來指定,例如,PST 表示太平洋標準時間,它比UTC 晚8個小時
4.1 與時區有關的函式
4.2 將時間值從一個時區轉換為另一個時區
select to_char(NEW_TIME(to_date('25-MAY-2012 19:45'),'DD-MON-YYYY HH24:MI'),'PST','EST'),
'DD-MON-YYYY HH24:MI') from dual;
5. 使用時間戳
TIMESTAMP 'YYYY-MM-DD HH24:MI:SS.SSSSSSSSS'
6. 與時間戳有關的函式
select current_timestamp,localtimestamp,systimestamp from dual;
7. 使用時間間隔
注:時間間隔記錄的是一段時間長度(例如1年零3個月),而時間值或時間戳記錄的是特定的日期
和時間(例如2006年10月28日下午7點32分16秒)
7.1 使用INTERVAL YEAR TO MONTH 型別
CRATE TABLE coupons(
coupon_id INTEGER CONSTARINT coupons_pk PRIMARY KEY,
name VARCHAR2(30) NOT NULL,
duration INTERVAL YEAR(3) TO MONTH
);
要向資料庫提供INTERVAL YEAR TO MONTH 字面值,可以使用下面的簡化語法:
INTERVAL '[+|-][y][-m]' [YEAR[(years_precision)]] [TO MONTH]
7.2 使用INTERVAL DAY TO SECOND 型別
CREATE TABLE promotions
(
promotion_id INTEGER CONSTRAINT promotions_pk PRIMARY KEY,
name VARCHAR2(30) NOT NULL,
duration INTERVAL DAY(5) TO SECOND(4)
);
要向資料庫提供INTERVAL DAY TO SECOND 字面值,可以使用下面的簡化語法:
INTERVAL '[+|-][d] [h[:m[:s]]]' [DAY[(days_precision]]
[TO HOUR | TO_MINUTE | SECOND[(seconds_precision)]]
7. 與時間間隔有關的函式
7.1 NUMTODSINTERVAL()
SELECT NUMTODSINTERVAL(1.5,'DAY'),
NUMTODSINTERVAL(3.25,'HOUR'),
NUMTODSINTERVAL(5,'MINUTE'),
NUMTODSINTERVAL(10.12345,'SECOND')
FROM DUAL;
7.2 NUMTOYMINTERVAL()
SELECT NUMTOYMINTERVAL(1.5,'YEAR'),
NUMTOYMINTERVAL(3.25,'MONTH'),
NUMTOYMINTERVAL(3.7,'MONTH') ==> (四捨五入對月份)
FROM DUAL;
select sysdate,add_months(sysdate,-12) from dual; -- 減12個月
select sysdate,add_months(sysdate,-1) from dual; -- 減1個月
select sysdate,to_char(sysdate-7,'yyyy-mm-dd hh24:mi:ss') from dual; -- 減一個星期(7天)
select sysdate,to_char(sysdate-1,'yyyy-mm-dd hh24:mi:ss') from dual; -- 減一天
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd hh24:mi:ss') from dual; -- 減一小時
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd hh24:mi:ss') from dual; -- 減一分鐘
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd hh24:mi:ss') from dual; -- 減一秒鐘
相關文章
- sql 日期函式SQL函式
- Sql Server 日期函式SQLServer函式
- ORACLE單行函式與多行函式之四:日期函式示例Oracle函式
- SQL 10 函式 3 日期時間函式 - 5 計算日期差額SQL函式
- SQL 日期格式相關函式SQL函式
- 字元函式、數字函式和日期函式字元函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- Sql Server函式全解(4):日期和時間函式SQLServer函式
- Sql Server函式全解(四)日期和時間函式SQLServer函式
- 日期函式函式
- 【函式】Oracle函式系列(2)--數學函式及日期函式函式Oracle
- 【Mysql 學習】日期函式函式MySql函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- 幾個SQL 日期處理函式SQL函式
- SQL SERVER 時間和日期函式SQLServer函式
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- ABAP日期函式函式
- Sybase日期函式函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- Sql Server系列:日期和時間函式SQLServer函式
- Sql Server函式全解(五)之系統函式SQLServer函式
- Oracle PL/SQL 之 函式OracleSQL函式
- SQLSERVER日期函式(zt)SQLServer函式
- 日期時間函式函式
- 日期提取函式EXTRACT函式
- oracle日期函式(1)Oracle函式
- oracle日期函式(2)Oracle函式
- oracle日期函式(3)Oracle函式
- oracle日期函式(4)Oracle函式
- oracle日期函式(5)Oracle函式
- Oracle的日期函式Oracle函式
- oracle 10g函式大全–日期型函式Oracle 10g函式
- oracle 10g函式大全--日期型函式Oracle 10g函式
- mysql 自定義分析函式 least 及 日期函式MySql函式AST
- 探索MySQL高階語句(數學函式、聚合函式、字串函式、日期時間函式)MySql函式字串
- Django筆記二十五之資料庫函式之日期函式Django筆記資料庫函式
- SQL Server 裡的日期和時間函式SQLServer函式
- Clickhouse SQL日期處理函式及案例分享SQL函式