在mysql上次读取TimeStamp是Datetime的列。我想根据上次读取时间戳获取aggreagteUsage。
上次阅读TimeStamp是yyy-mm-dd hr:min:se格式(例如:2015-03-02 09:15:36)
sql = "select aggregateUsage from sensorhourlyaggregates where sensorId=250
and lastReadingTimestamp =?";
PreparedStatement prepStmt;
prepStmt = (PreparedStatement) conn.prepareStatement(sql);
Timestamp sbegin = new java.sql.Timestamp(date.getTime());
prepStmt.setTimestamp(1, sbegin);
Sbegin is in yyy-mm-dd hr:min:se.nanosec format (EX:2015-03-02 09:15:36.00)
由于两种格式不同,我无法获取数据。如何删除
时间戳的毫秒数。我试过了
Clendar.clear(calendar.miliseconds)但我无法获取
答案 0 :(得分:0)
您必须将时间戳转换为日期,以下代码可能会对您有帮助。
Timestamp sbegin = new Timestamp(/* Pass Timestamp from DB */);
Date date = new Date(sbegin.getTime());
System.out.println(date);
答案 1 :(得分:0)
这与日期格式无关,您没有获得任何记录,因为数据库中的任何记录都没有您在查询中提供的确切时间戳,因为您使用的是等号(=)在你的查询中。
如果您想要特定日期的记录,则需要更改查询(因为列名表明它是时间戳)
`Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date dateWithoutTime = cal.getTime();`