【问题标题】:Fetch DateTime column from mysql in java从java中的mysql获取DateTime列
【发布时间】:2015-05-14 06:37:52
【问题描述】:

在 mysql 中最后读取的 TimeStamp 是 Datetime 的列。我想根据上次阅读时间戳获取 aggreagteUsage。

最后读取时间戳为 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) 但我无法获取

【问题讨论】:

  • 你为什么使用equals?您想要特定日期的记录吗?如果是这样,您可以使用Calendar 创建一个没有时间戳的日期。但由于列名表明它是一个时间戳,因此您还需要更改查询

标签: java mysql datetime


【解决方案1】:

您必须将时间戳转换为日期,以下代码可能对您有所帮助。

Timestamp sbegin = new Timestamp(/* Pass Timestamp from DB */);
Date date = new Date(sbegin.getTime());
System.out.println(date);

【讨论】:

    【解决方案2】:

    这与日期格式无关,您没有得到任何记录,因为数据库中没有任何记录具有您在查询中提供的确切时间戳,因为您在您的查询。

    如果您想要特定日期的记录,则需要更改查询(因为列名表明它是时间戳)

    `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();`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-22
      • 2020-01-18
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多