我正在制作一個使用 JDBC 訪問資料庫的應用程式。我正在使用 mysql,但稍后我將在強制 Oracle 的平臺上托管我的資料庫。
假設我想制作一張表格employee,用于映射員工、他受雇的日期和他結束輪班的時間。
我決定做的是使用日期和時間作為字串。所以要創建一個表,我會使用:
CREATE TABLE employee
(
ID VARCHAR(255),
dateEmployed VARCHAR(255),
endShift VARCHAR(255),
Primary key (ID)
);
然后在帶有 jdbc 的 java 中,我只使用executeQuery搜索所有員工并在純 java 中過濾結果。這種方法看起來很幼稚,因為我無法通過 Java jdbc 比較 sql 中日期和時間的字串。我怎樣才能以正確的方式做到這一點?
uj5u.com熱心網友回復:
我決定做的是使用日期和時間作為字串。
別
如果要存盤日期和時間,請使用DATE資料型別(在 Oracle 中,它同時存盤日期和時間)。
CREATE TABLE employee
(
ID VARCHAR(255),
dateEmployed DATE,
endShift DATE, -- or maybe INTERVAL DAY(0) TO SECOND if you want time
-- without a date.
PRIMARY KEY (ID)
);
然后在帶有 jdbc 的 java 中,我只使用 executeQuery 來搜索所有員工并在純 java 中過濾結果。這種方法看起來很幼稚,因為我無法通過 Java jdbc 比較 sql 中日期和時間的字串。我怎樣才能以正確的方式做到這一點?
如果您想過濾日期,例如,獲取所有在 2022 年 1 月入職的員工,則:
SELECT *
FROM employee
WHERE dateEmployed >= DATE '2022-01-01'
AND dateEmployed < DATE '2022-02-01'
如果您想使用來自 JDBC 的系結引數,那么您的查詢應該是:
SELECT *
FROM employee
WHERE dateEmployed >= ?
AND dateEmployed < ?
然后在準備好的陳述句中設定日期(如果您沒有時間組件作為系結值)或時間戳(如果您有時間組件)系結引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/452708.html
下一篇:獲取上個月的第一周星期一
