java - 在 SQL 查询中使用格式化字符串作为日期

标签 java mysql string hibernate date

在将日期放入 SQL 查询之前,我会格式化该日期并将其转换为字符串,因为 java.util.Date 不起作用。

//create the date format
String DATE_FORMAT = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);

//convert the date to a String   
String dateString = sdf.format(Date);

然后我在 java 代码的 SQL 查询中使用日期字符串:

... +" and (t.actualEndDateTime > '" + dateString + "';

我知道 java.sql.Date 也是一个选项,但我只是想知道这是可以接受的还是不好的做法?

我使用 Hibernate 3.0 连接到 mySQL 数据库。

最佳答案

您可以使用 MYSQL 语法来完成此操作。检查此线程:MySQL: Compare date strings?

但不建议这样做,至少有两个原因:

  • 使用 Hibernate,您应该更喜欢HQL,以便您的应用程序 与数据库无关。
  • 出于比较目的将Date 转换为String 是不必要的步骤(仅当您的日期以字符串形式存储在数据库中时)

Hibernate 能够将 java.util.Date 与数据库特定的 Date 类型正确比较

关于java - 在 SQL 查询中使用格式化字符串作为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22984851/

相关文章:

PHP/MySQL 以错误的顺序回显并且还回显列标题而不是该列的行值?

mysql - mysql中10位手机没有数据有什么问题?

c++ - 异步操作中 move/复制字符串的最佳方法?

java - 判断字符串是否包含 a-z 字符

java - 如何使用Java清除openGL中的屏幕

javascript - Node.js 中的异步查询、等待和 Promise

java - CLR 和 JVM 中动态类型的不同方法

c - 在进入循环之前 fgets() 不断被跳过

java - Netbeans Java Web 项目模板在哪里?

java - 如何在 Netty 中取消写入超时?