在數據庫開發中,日期和時間的格式化是一個常見的需求。GBase 8s 提供了 GL_DATETIME 環境變量,用於控制日期和時間的顯示和插入格式。本文將介紹 GL_DATETIME 參數的使用方法,特別是其在 JDBC 中,通過實際示例展示其效果。
GL_DATETIME 是一個環境變量,用於控制日期和時間的顯示和插入格式。它在 dbaccess 和 JDBC 中都有應用,但在 JDBC 中有一些特殊的行為。本文將重點介紹這些差異,並提供實際應用示例。
create table t1 (c datetime year to fraction(5));
和dbaccess區別
JDBC的GL_DATETIME既影響顯示,還影響插入,加 USE_DTENV=1 才生效
(1)dbaccess:
可見,dbaccess查詢的結果集是按 GL_DATETIME 顯示的,但是插入時不能按GL_DATETIME格式插入,必須 export USE_DTENV=1,才可以。
(2)JDBC
jdbc:gbasedbt-sqli://192.168.226.180:12888/test:DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;GL_DATETIME=%Y/%m/%d %H:%M:%S.%F5;
stmt.executeUpdate("insert into t1 values('2021-05-21 10:20:30.12345')");
rs = stmt.executeQuery("select * from t1");
while (rs.next()) {
System.out.println(rs.getString(1));
}
插入格式,不符合GL_DATETIME,但是可以插入,所以插入時GL_DATETIME沒生效
查詢結果:2021-05-21 10:20:30.12345,可見GL_DATETIME也沒生效
jdbc:gbasedbt-sqli://192.168.226.180:12888/test:DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;GL_DATETIME=%Y/%m/%d %H:%M:%S.%F5; USE_DTENV=1
插入那行,必須按GL_DATETIME格式,否則拋異常
stmt.executeUpdate("insert into t1 values('2021/05/21 10:20:30.12345')");
查詢結果:2021/05/21 10:20:30..12345,按GL_DATETIME格式
JDBC顯示%Fn有問題
上邊顯示的2021/05/21 10:20:30..12345,多1個“.”不是多敲,是JDBC的問題
如果GL_DATETIME=%Y/%m/%d %H:%M:%S%F5,也就是去掉%S和%F5之間的“.”
輸出就是:2021/05/21 10:20:30.12345
dbaccess沒這個問題
不指定GL_DATETIME時,顯示小數點後0個數不同
insert into t1 values('2021-05-21 10:20:30');
(1)dbaccess
2021-05-21 10:20:30.00000
(2)JDBC
2021-05-21 10:20:30.0
如果指定GL_DATETIME=%Y/%m/%d %H:%M:%S%.F3,小數點後邊就都是3個0
多語言支持
中文
JDBC參數:DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;GL_DATETIME=%b
rs.getString:五月
英文
JDBC參數:DB_LOCALE=en_US.utf8;CLIENT_LOCALE=en_US.utf8;GL_DATETIME=%b
rs.getString:May
通過本文的介紹,你已經瞭解了 GBase 8s 中 GL_DATETIME 參數的使用方法,希望這些內容能幫助你在實際開發中更好地利用這一功能。如果你在使用過程中遇到任何問題,歡迎隨時在社區中提問,我們在這裏為你提供支持!