《資料庫基礎語法》6 日期和時間的儲存與格式轉換

2022-07-04 01:36:13 字數 2324 閱讀 1450

上次我們介紹了 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 計算兩個日期之間的天數,年按...