将java.sql.Timestamp转换为java.sql.Date

And*_*390 5 java jdbc

我有一个Timestamp和Date变量,我想比较它的相等性(当然只有日期部分).令我惊讶的是,构造函数Date(long)节省了时间部分,所以这段代码不正确:

date = resultSet.getDate(1);
timestamp = resultSet.getTimestamp(2);    
//...
if (date.equals(new Date (timestamp.getTime())) ...
Run Code Online (Sandbox Code Playgroud)

我用以下代码解决这个问题:

DateFormat dateFormat = new SimpleDateFormat ("yyyyMMdd");
if (date.equals(dateFormat.parse(dateFormat.format(timestamp)))) ...
Run Code Online (Sandbox Code Playgroud)

或者我可以在sql查询中将时间戳转换为日期,但我也需要时间戳表示.有没有更好的方法来从时间戳中删除时间部分.

Vit*_*jok 9

Java 8转换方法:

Date date = Date.valueOf(timestamp.toLocalDateTime().toLocalDate());
Run Code Online (Sandbox Code Playgroud)

反之亦然:

Timestamp timestamp = Timestamp.valueOf(date.toLocalDate().atStartOfDay());
Run Code Online (Sandbox Code Playgroud)


Dam*_*ash 1

对于这个,你有三种选择。

首先是使用 Yoda 时间和类DateTimeComparator.getDateOnlyInstance()

第二种是使用 apache 和DateUtils.isSameDay()中的公共资源

第三,使用[日历]并设置时间并仅比较年月日。正如戴夫·韦伯提议的那样。