在java中使用日期类型
我试图从一个SQL查询中获取两个日期,并对它们进行比较。所以要比较它们,我相信我需要使用“Date”类型。这就是我正在尝试的,我知道我从结果集中得到的日期不正确,但我不知道如何做到这一点在java中使用日期类型,java,date,resultset,Java,Date,Resultset,我试图从一个SQL查询中获取两个日期,并对它们进行比较。所以要比较它们,我相信我需要使用“Date”类型。这就是我正在尝试的,我知道我从结果集中得到的日期不正确,但我不知道如何做到这一点 Date validDate = new Date(0); Date currentDate = new Date(0); // query if (result.next()) { validDate = (result.getObject("validDate")!=null)?re
Date validDate = new Date(0);
Date currentDate = new Date(0);
// query
if (result.next()) {
validDate = (result.getObject("validDate")!=null)?result.getObject("validDate").toDate():"";
currentDate = (result.getObject("currentDate")!=null)?result.getObject("currentDate").toDate():"";
}
if (currentDate > validDate) {
//do something
}
同样,这是我的尝试,但我似乎无法让它运行。提前谢谢
编辑:查询必须在我得到的两个日期上显示字符(列“MM-DD-YYYY”)。尝试currentDate。在(validDate)之后编辑:现在您已经提到您的查询将日期转换为字符串,请停止这样做。您最终将在调用端对其进行重新分析-那么为什么要毫无意义地执行两次转换呢?将字符串转换保持在绝对最小值-尽可能使用最合适的数据类型
原始答案 您尚未显示什么是
result
,但可能需要获取日期值之类的内容
请注意,您的比较代码也不起作用,因为
日期没有
-您需要如下内容:
if (currentDate.after(validDate))
或获取基本的毫秒数:
if (currentDate.getTime() > validDate.getTime())
此外:
- 不能将“”分配给
变量-字符串不是日期
日期
- 您只需调用
并检查返回值是否为ResultSet.getDate()
,而不是先调用null
,然后再调用getObject
getDate()
rs.getTimestamp
(带timeinfo)或rs.getDate
(不带timeinfo)方法
此外,由于日期对象的层次结构相当复杂,您应该仅使用
date1.compareTo(date2)>0
方法比较日期。如果结果对象是ResultSet,则
Date validDate = result.getTimestamp("validDate");
Date currentDate= result.getTimestamp("currentDate");
// you can add null checks here too....
// you can also use if (currentDate.getTime() > validDate.getTime()){}
if (currentDate.before(validDate)) {
//some code inhere...
}
您的代码至少有三处错误:
是一个“
文本,因此您不能在三元表达式中使用它来分配给字符串
类型的变量-请改用日期
,这样您就不需要三元表达式null
返回一个ResultSet.getObject()
,该对象没有对象
toDate()方法。相反,只需使用
ResultSet.getDate()
- 不能使用
运算符比较
实例。您必须使用日期
类的Date
和before()
方法after()
Date validDate = new Date(0);
Date currentDate = new Date(0);
if (result.next()) {
validDate = result.getDate("validDate");
currentDate = result.getDate("currentDate");
}
if (currentDate.after(validDate)) {
//do something
}
if
子句可能必须包含一些额外的逻辑来处理null
值。这样做比让隐式转换更好。你能告诉我们从哪里得到“结果”吗?另外,可能还有一个result.getObject(“validDate”)的示例。