PreparedStatement 和 CURDATE() MySQL 函数

Posted

技术标签:

【中文标题】PreparedStatement 和 CURDATE() MySQL 函数【英文标题】:PreparedStatement and CURDATE() MySQL function 【发布时间】:2014-12-19 09:59:41 【问题描述】:

在 PreparedStatements 中使用 CURDATE() mysql 函数的正确方法是什么? 表列是 DATE 类型,表中插入的值必须像 1988-07-29。

ps.setDate(5, ...);

【问题讨论】:

(***.com/a/7626080/2749470) 这可能会帮助你 为什么不将 curdate() 调用作为 SQL 语句的一部分并删除它的参数? @BhargavModi 应该接受您的回答,它可以工作 如果对您有帮助,我应该将其添加为答案吗?? @BhargavModi 我认为是的,因为答案只是在 SQL 语句中使用 now() 并删除它的参数。 【参考方案1】:

没有。您要么在 Java 中创建当前日期,要么使用 CURDATE() 准备语句

【讨论】:

【参考方案2】:

喜欢:

SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
String fd = f.format(new Date());
Date date = f.parse(fd);
preparedStatement.setTimestamp(index, new Timestamp(date.getTime()));

【讨论】:

【参考方案3】:

您可以通过两种方式进行操作,一种来自java,如下所示 使用 java.sql.Date

例如: 使用java.sql.Date

java.sql.Date date = java.sql.Date.valueOf("2013-09-04");

如果要插入当前日期:

ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));

使用java.sql.Timestamp

ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));

另一种方法是从SQL 到数据库支持操作,例如now() 用于MySQLcurrent_timestamp() 用于PostgreSQL 等等看看下面的例子

String sql = "INSERT INTO user (email, creationdate) VALUES (?, now())";//for MySQL

了解更多详情Use this link(我最喜欢的作者之一)。

很高兴为您提供帮助:)

【讨论】:

【参考方案4】:

喜欢

preparedStatement.setTimestamp(5, new Timestamp(new Date().getTime()));

【讨论】:

以上是关于PreparedStatement 和 CURDATE() MySQL 函数的主要内容,如果未能解决你的问题,请参考以下文章

JDBC深入理解Statement和PreparedStatement

Statement 和 PreparedStatement 的区别

JDBC - 语句、PreparedStatement、CallableStatement 和缓存

PreparedStatement批量处理和事务

Java中PreparedStatement和Statement的用法区别

PreparedStatement和Statement