使用java插入数据库表时,如何格式化Date变量

时间:2017-10-13 03:08:02

标签: java datetime jdbc derby

我有这个代码来构建一个表:

CREATE TABLE Course
(
    CustomerName varchar(30) NOT NULL, Title varchar (30) NOT NULL,
    Type varchar(30) NOT NULL, Instructor varchar(30) NOT NULL, StartDate Date NOT NULL, EndDate Date NOT NULL,
    Price float NOT NULL
);

当我尝试在Course表中插入一些内容时,日期显示格式错误。它要么说日期不能保持整数或字符串。如何输入日期以便它除外?以下是我尝试过的所有方法:

INSERT INTO Course(CustomerName, Title, Type, Instructor, StartDate,EndDate,Price) VALUES ('Hary','Intro to Stupidity', 'Programming','Davis', 2017/11/12, 2017/04/03, 124.00);

INSERT INTO Course(CustomerName, Title, Type, Instructor, StartDate,EndDate,Price) VALUES ('Hary','Intro to Stupidity', 'Programming','Davis', 2017-11-12, 2017-04-03, 124.00);

INSERT INTO Course(CustomerName, Title, Type, Instructor, StartDate,EndDate,Price) VALUES ('Hary','Intro to Stupidity', 'Programming','Davis', 2017.11.12, 2017.04.03, 124.00);

INSERT INTO Course(CustomerName, Title, Type, Instructor, StartDate,EndDate,Price) VALUES ('Hary','Intro to Stupidity', 'Programming','Davis', (2017/11/12), (2017/04/03), 124.00);

如果有人能提供帮助那就太棒了!

1 个答案:

答案 0 :(得分:1)

数据库不会以“格式”存储日期时间值。

但是您可以输入表示为具有格式的字符串的日期时间值。使用双引号标记传递SQL(YYYY-MM-DD)所需的正确格式的字符串,例如"2017-11-12"

或者,更好的是,将日期时间对象传递给日期时间列中的值。

 LocalDate localDate = LocalDate.of( 2017 , Month.NOVEMBER , 12 ) ;

使用PreparedStatement来避免SQL注入安全风险。

myPreparedStatement.setObject( … , localDate ) ;

检索为日期时间对象。

LocalDate localDate = myResultSet.getObject( … , LocalDate.class ) ;

阅读Oracle教程并搜索Stack Overflow。这些主题已经多次得到解决。

提示:在列名中使用全部小写,以便跨数据库实现最大可移植性。