我必須創建這個表:
Temps_ED (DateFacture, month, year)
在哪里 :
DateFacture :day month year
month: (month year)
year : year
uj5u.com熱心網友回復:
Oracle 有兩種資料型別用于存盤日期時間值。
DATETIMESTAMP
兩者總是具有組件年、月、日、小時、分鐘、秒。TIMESTAMP可以選擇有小數秒和/或時間戳。因此,如果您使用or資料型別,則必須有一個時間組件。DATETIMESTAMP
我要問的是,是否有一種方法可以制作列型別日期,但只能采用“月份日期‘mm/dd’”中的特定格式
不,DATE和TIMESTAMP都是二進制資料型別;它們不存盤任何格式。如果您想要一種格式,那么您需要將其從二進制資料轉換為格式化資料(即字串),但這并不意味著您應該將值存盤為字串;您應該將它們存盤為二進制資料,然后在檢索/顯示時對其進行格式化。
一種解決方案是存盤一個DATE,然后使用虛擬列來獲取其他格式;這將確保所有列都是一致的。
CREATE TABLE temps_ed (
value DATE,
datefracture VARCHAR2(10)
GENERATED ALWAYS AS (TO_CHAR(value, 'YYYY-MM-DD')),
month VARCHAR2(7)
GENERATED ALWAYS AS (TO_CHAR(value, 'YYYY-MM')),
year NUMBER(4,0)
GENERATED ALWAYS AS (EXTRACT(YEAR FROM value))
);
INSERT INTO temps_ed (value) VALUES (SYSDATE);
然后:
SELECT * FROM temps_ed;
輸出:
價值 日期斷裂 月 年 2021-12-04T14:41:37 2021-12-04 2021-12 2021年
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373079.html
下一篇:按值的數量計數
