如何在Oracle中插入和檢索日期?


問題

您想將日期插入表中並檢索它們。

解決方案

Oracle 預設使用 DD-MON-YYYY 格式表示日期,其中

  1. DD 表示兩位數的日期。
  2. MON 表示月份的前三個字母,例如 FEB。
  3. YYYY 是四位數的年份,例如 1968

讓我們來看一個向包含名為 dob 的 DATE 列的 customers 表中新增行的示例。

以下 INSERT 語句向 customers 表新增一行,並將 dob 列設定為 05-FEB-1968

示例

INSERT INTO customers ( customer_id, first_name, last_name, dob, phone) VALUES (7, 'James', 'Bond', '31-DEC-2000', '007-007-0007');

您也可以使用 DATE 關鍵字向資料庫提供日期字面量。日期必須使用 YYYY-MM-DD 日期格式,其中

  1. YYYY 是四位數的年份。
  2. MM 是從 1 到 12 的兩位數月份。
  3. DD 是兩位數的日期。

示例

INSERT INTO customers ( customer_id, first_name, last_name, dob, phone) VALUES (11, 'Roger', 'Federer', DATE '1983-10-01', '001-001-0001');

預設情況下,資料庫以 DD-MON-YY 格式返回日期,其中 YY 是年份的後兩位數字。

使用 TO_CHAR() 和 TO_DATE() 轉換日期時間

Oracle 資料庫具有允許您將一個數據型別的值轉換為另一個數據型別的值的函式。我們將使用 TO_CHAR() 和 TO_DATE() 函式將日期時間轉換為字串,反之亦然。

TO_CHAR() 用於將日期時間轉換為字串

TO_CHAR(x [, format]) 用於將日期時間 x 轉換為字串。我們還可以為 x 提供可選的格式。一個示例格式是 MONTH DD, YYYY,其中

  1. MONTH 是月份的全名,大寫。
  2. DD 是兩位數的日期。
  3. YYYY 是四位數的年份。

以下查詢使用 TO_CHAR() 將 customers 表中的 dob 列轉換為格式為 MONTH DD, YYYY 的字串

示例

SELECT customer_id, TO_CHAR(dob, 'MONTH DD, YYYY') FROM customers;

下一個查詢使用 SYSDATE 函式從資料庫獲取當前日期和時間,然後使用 TO_CHAR() 和格式 MONTH DD, YYYY, HH24:MI:SS 將日期和時間轉換為字串。此格式的時間部分表示小時採用 24 小時制,並且分鐘和秒也包含在字串中。

示例

SELECT TO_CHAR(SYSDATE, 'MONTH DD, YYYY, HH24:MI:SS') FROM dual;

NOVEMBER  13, 2020, 10:04:11

TO_DATE() 用於將字串轉換為日期時間

我們可以使用 TO_DATE(x [, format]) 將字串 x 轉換為日期時間。我們可以提供一個可選的格式字串來指示 x 的格式。如果我們省略 format,則日期必須採用預設的資料庫格式(通常為 DD-MON-YYYY 或 DD-MON-YY)。

以下查詢使用 TO_DATE() 將字串“31-DEC-2020”和“31-DEC-20”轉換為 2020 年 12 月 31 日的日期。但是,最終日期以預設格式 DD-MON-YY 顯示。

示例

SELECT TO_DATE('31-DEC-2020'), TO_DATE('31-DEC-20') FROM dual;

最後,DBA 可以幫助您設定 Oracle 中的預設日期格式。

DBA 可以透過在資料庫的 init.ora 或 spfile.ora 檔案中設定此引數的值來更改 NLS_DATE_FORMAT 的設定,這兩個檔案都在資料庫啟動時讀取。DBA 也可以使用 ALTER SYSTEM 命令設定 NLS_DATE_FORMAT。您還可以使用 SQL*Plus 為您自己的會話設定 NLS_DATE_FORMAT 引數,方法是使用 ALTER SESSION 命令

示例

ALTER SESSION SET NLS_DATE_FORMAT = 'MONTH-DD-YYYY';

更新於:2020-12-05

21K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告