如何在 java JDBC 和 sql 中操作日期和时间
How to manipulate date and time in java JDBC and sql
我正在制作一个应用程序,该应用程序具有使用 JDBC 访问的数据库。
我正在使用 mysql 但稍后我将在一个强制使用 Oracle 的平台上托管我的数据库。
假设我想制作一个 table employee
来映射员工、他受雇的日期和他下班的时间。
我决定做的是使用日期和时间作为字符串。所以要创建一个 table 我会使用 :
CREATE TABLE employee
(
ID VARCHAR(255),
dateEmployed VARCHAR(255),
endShift VARCHAR(255),
Primary key (ID)
);
然后在 java 和 jdbc 中,我只使用 executeQuery
搜索所有员工并在纯 java 中过滤结果。
这种方法似乎很幼稚,因为我无法通过 Java jdbc 比较 sql 中的日期和时间字符串。我怎样才能以正确的方式做到这一点?
What I decided to do is use Date and Time as strings.
不要
如果要存储日期和时间,请使用 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)
);
Then in java with jdbc I just use the executeQuery to search for all the employee and filter the result in pure java. This method seems naive, as I cannot compare the strings for date and time in sql through a Java jdbc. How can I do this the correct way?
如果您想过滤日期,例如,获取 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 < ?
然后在准备好的语句中设置日期(如果您的绑定值没有时间组件)或时间戳(如果您有时间组件)绑定参数。
我正在制作一个应用程序,该应用程序具有使用 JDBC 访问的数据库。 我正在使用 mysql 但稍后我将在一个强制使用 Oracle 的平台上托管我的数据库。
假设我想制作一个 table employee
来映射员工、他受雇的日期和他下班的时间。
我决定做的是使用日期和时间作为字符串。所以要创建一个 table 我会使用 :
CREATE TABLE employee
(
ID VARCHAR(255),
dateEmployed VARCHAR(255),
endShift VARCHAR(255),
Primary key (ID)
);
然后在 java 和 jdbc 中,我只使用 executeQuery
搜索所有员工并在纯 java 中过滤结果。
这种方法似乎很幼稚,因为我无法通过 Java jdbc 比较 sql 中的日期和时间字符串。我怎样才能以正确的方式做到这一点?
What I decided to do is use Date and Time as strings.
不要
如果要存储日期和时间,请使用 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)
);
Then in java with jdbc I just use the executeQuery to search for all the employee and filter the result in pure java. This method seems naive, as I cannot compare the strings for date and time in sql through a Java jdbc. How can I do this the correct way?
如果您想过滤日期,例如,获取 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 < ?
然后在准备好的语句中设置日期(如果您的绑定值没有时间组件)或时间戳(如果您有时间组件)绑定参数。