我有这个代码来构建一个表:
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);
如果有人能提供帮助那就太棒了!
答案 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。这些主题已经多次得到解决。
提示:在列名中使用全部小写,以便跨数据库实现最大可移植性。