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()
用于MySQL
或current_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 和缓存