Java SQL将日期插入数据库

Java SQL将日期插入数据库,java,sql,database,insert,Java,Sql,Database,Insert,我使用java.util.Date来获取日期,我得到的日期格式如下 美国东部时间2013年6月29日星期六11:07:25 当我尝试使用将其插入数据库时 String QueryString = "INSERT INTO db (day) Values ('"+d+"');"; st.executeUpdate(QueryString); 我明白了 “从字符转换日期和/或时间时,转换失败 绳子。” 如何将该类型的日期插入数据库 是否应将其声明为字符串?用于与数据库兼容用于与数据库兼容

我使用
java.util.Date
来获取日期,我得到的日期格式如下

美国东部时间2013年6月29日星期六11:07:25

当我尝试使用将其插入数据库时

String QueryString = "INSERT INTO db (day) Values ('"+d+"');";
    st.executeUpdate(QueryString);
我明白了

“从字符转换日期和/或时间时,转换失败 绳子。”

如何将该类型的日期插入数据库

是否应将其声明为字符串?

用于与数据库兼容

用于与数据库兼容

如何将该类型的日期插入数据库?我应该将其声明为字符串吗

否-您甚至应该避免当前的字符串转换。您不应该像那样动态构建SQL—这会导致SQL注入攻击、代码难以读取和转换失败

相反,请使用a并使用以下方法设置参数:

请注意,
java.sql.Date
java.util.Date
的一个子类,但它们有些不同。我从来都不清楚哪个时区用于将给定的时间瞬间转换为实际日期,文档也没有什么帮助。在我看来,它被设计打破了,但那是另一回事。您可以使用另一个
setDate
重载,它接受用于时区的
日历。这仍然是非常不清楚的,但希望你能得到你想要的结果

如何将该类型的日期插入数据库?我应该将其声明为字符串吗

否-您甚至应该避免当前的字符串转换。您不应该像那样动态构建SQL—这会导致SQL注入攻击、代码难以读取和转换失败

相反,请使用a并使用以下方法设置参数:

请注意,
java.sql.Date
java.util.Date
的一个子类,但它们有些不同。我从来都不清楚哪个时区用于将给定的时间瞬间转换为实际日期,文档也没有什么帮助。在我看来,它被设计打破了,但那是另一回事。您可以使用另一个
setDate
重载,它接受用于时区的
日历。这仍然非常不清楚,但希望你能得到你想要的结果。

或者,使用:

不过,根据驱动程序/数据库的不同,表上可能存在写锁

日期格式化应该在输出上进行,而不是在输入上。让数据库决定如何最好地存储日期。

或者,使用:

不过,根据驱动程序/数据库的不同,表上可能存在写锁

日期格式化应该在输出上进行,而不是在输入上。让数据库决定如何最好地存储日期。

您可以使用它格式化日期对象

Date d = Calendar.getInstance().getTime(); //Your date

String dateString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d);

String QueryString = "INSERT INTO db (day) Values ('"+dateString+"');";
st.executeUpdate(QueryString);
您可以使用设置日期对象的格式

Date d = Calendar.getInstance().getTime(); //Your date

String dateString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d);

String QueryString = "INSERT INTO db (day) Values ('"+dateString+"');";
st.executeUpdate(QueryString);

参数化了值。参数化了值。
Date d = Calendar.getInstance().getTime(); //Your date

String dateString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d);

String QueryString = "INSERT INTO db (day) Values ('"+dateString+"');";
st.executeUpdate(QueryString);