簡體   English   中英

將 DATE 插入 H2 數據庫

[英]Insert a DATE into H2 database

我想使用 sql 腳本將日期插入到我的 H2 數據庫中。 現在我有以下內容:

CREATE TABLE CUSTOMERS (
  ID int NOT NULL,
  FIRSTNAME varchar(50) NOT NULL,
  LASTNAME varchar(50) NOT NULL,
  GENDER varchar(50) NOT NULL,
  COMPANYID varchar(50) NOT NULL,
  EMAIL varchar(50) NOT NULL,
  BIRTHDAY date NOT NULL,
  CREATEDAT date NOT NULL,
  UPDATEDAT date NOT NULL,
  PRIMARY KEY (ID)
);
INSERT INTO CUSTOMERS (
  ID,
  FIRSTNAME,
  LASTNAME,
  GENDER,
  COMPANYID,
  EMAIL,
  BIRTHDAY,
  CREATEDAT,
  UPDATEDAT
)
VALUES (
  1, 
  'Lee', 
  'Diaz', 
  'male', 
  '159', 
  'vel.sapien.imperdiet@protonmail.ca', 
  '05-08-1912', 
  '13-12-2019', 
  '30-09-2021'
)

由於某種原因,日期不起作用,但我不明白為什么。 有人知道嗎?

我們可以嘗試對 DateTime 插入值使用ISO_8601格式。

INSERT INTO CUSTOMERS (
  ID,
  FIRSTNAME,
  LASTNAME,
  GENDER,
  COMPANYID,
  EMAIL,
  BIRTHDAY,
  CREATEDAT,
  UPDATEDAT
)
VALUES (
  1, 
  'Lee', 
  'Diaz', 
  'male', 
  '159', 
  'vel.sapien.imperdiet@protonmail.ca', 
  '1912-05-08', 
  '2019-13-12', 
  '2021-30-09'
)

日期時間值有標准 SQL 文字:

  • DATE數據類型DATE '2022-12-31'
  • TIME '23:59.59 , TIME '23.59.59.123456'等,用於TIME數據類型。
  • TIME WITH TIME ZONE '23:59:59+07:30'用於TIME WITH TIME ZONE數據類型。
  • TIMESTAMP '2022-12-31 23.59.59'用於TIMESTAMP
  • TIMESTAMP WITH TIME ZONE '2022-12-31 23.59.59+07:30'用於TIMESTAMP WITH TIME ZONE

各種數據庫系統可能支持自己的擴展。 在 H2 中,您可以在插入語句中指定字符串'2022-12-31'而不是日期文字,許多人都這樣做。 但是,在日期時間算術表達式中,這種替換可能不起作用,因為各種表達式以不同的方式處理不同的數據類型, '2022-12-31'是字符串,它不是日期。 但它對DATE的顯式或隱式轉換會產生一個日期值。

H2 支持 ISO 8601 風格的日期時間文字,使用T而不是日期和時間之間的空格。 (SQL 中的日期時間和間隔值通常與 ISO 8601 不同。)H2 支持帶有時區文字的時間戳中的時區名稱,但 H2 總是將這些時區轉換為簡單的時區偏移量。

H2 支持負數年份和超過 4 位數的年份。

在某些兼容模式下,您可以使用其他替代語法,但通常應該避免使用它們。

還有各種日期時間解析和格式化功能,但我認為您在這里不需要它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM