在将日期放入 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/