上次我們介紹了 sql 中常見的字元函式,學習了如何對文字資料進行連線、大小寫轉換、子串的查詢和替換等處理。下面我們繼續討論常見的日期和時間函式,以及不同資料型別之間的轉換函式。
在資料庫中,日期時間型別存在 3 種形式:
timestamp 和 time 還可以新增 with time zone 選項,用於指定乙個時區偏移量。例如,utc 標準時間的 0 點等於北京時間的早上 8 點。時區選項通常用於支援全球化的應用系統中。以下是 4 種資料庫對於日期時間型別的支援情況。
其中,oracle 的 date 型別包含了日期和時間兩部分,但不支援 time 型別。mysql 還提供了 datetime 日期時間型別。
日期時間函式用於操作日期和時間資料,例如獲取當前日期、為指定日期增加天數,計算兩個日期之間的差或者獲取日期的部分資訊。下表列出了 sql 中常見的日期時間函式:
字元函式用於字元資料的處理,例如字串的拼接、大小寫轉換、子串的查詢和替換等。下表列出了 sql 中常見的字元函式:
我們演示一下這幾個函式的用法:
-- 當前日期
select current_date;
-- 當前時間
select current_time;
-- 當前日期加上時間,除了current_timestamp,還可以通過now()來獲取
select current_timestamp;
-- 擷取當然日期的指定部分
select extract(year from current_timestamp), -- 獲取年
extract(month from current_timestamp), -- 獲取月
extract(day from current_timestamp); -- 獲取天
select extract(hour from current_timestamp), -- 獲取小時
extract(minute from current_timestamp), -- 獲取分鐘
extract(second from current_timestamp); -- 獲取秒
cast(expr as type) 函式用於將資料轉換為不同的型別,以下是乙個型別轉換的示例:
select cast('123' as int) + 234; -- 357
select '123'::int + 234; -- 357
-- 對於postgresql來說,以上是等價的
所以我們可以很好的處理日期,舉個栗子:
-- 將字串轉成日期, 當然還可以轉成 interval
select '2018-1-1'::date + '7 day'::interval; -- 2018-01-08 00:00:00.000000
-- 再比如我有日期型別的資料 a 和 b, 我要在 b 的月份加在 a 上面
select '2018-1-1'::date + (extract(month from '2018-2-2'::date) || 'month')::interval; -- 2018-03-01 00:00:00.000000
-- 解釋一下,首先 "n year"::interval 就表示時間間隔n年, 同理 "n month"::interval 表示時間間隔n月
-- 當然還有 day、hour 什麼的
-- extract(month from '2018-2-2'::date)表示解析出來月份, 然後和 month 進行拼接, 最後轉成 interval 型別, 再相加
-- 另外,我這個是postgresql語法,支援通過::來進行型別轉化,但是其它資料庫則不一定支援, 因此注意自己所使用的資料庫
這一節我們介紹了日期和時間資料型別以及相關的函式,同時了解了資料型別之間的顯式轉換和隱式轉換。到此為止,我們已經學習了 sql 中各種常見的標量函式。 python學習(6) 日期和時間
python 程式能用很多方式處理日期和時間,轉換日期格式是乙個常見的功能。python 提供了乙個 time 和 calendar 模組可以用於格式化日期和時間。時間間隔是以秒為單位的浮點小數。每個時間戳都以自從1970年1月1日午夜 曆元 經過了多長時間來表示。python 的 time 模組下...
資料庫5 7 日期有時間型別
簡介 日期與時間型別 mysql中有多種表示日期的資料型別,主要有 datetime date timestamp,date 每乙個型別都有合法的取值範圍,當指定確實不合法的值時系統將 零 值插入到資料庫中。year型別是乙個單位元組型別用於表示年,在儲存時只需要1個位元組。可以使用各種格式指定ye...
程式設計學習筆記6 日期和時間的處理
日期和時間的處理問題也是程式設計比賽裡面經常見到的,比如藍橋杯裡面出現過的高斯問題。日期問題無非就是值得考慮的是瑞年問題。記住四年一閏,百年不閏,四百年再閏 這個常識判斷就行。下面這種辦法比原來第一次見到的處理高斯日記的辦法好 效率較低的高斯日記問題處理 include 計算兩個日期之間的天數,年按...