代码之家  ›  专栏  ›  技术社区  ›  Agi Hammerthief

如何在Jackcess中将long值转换为Access日期/时间值?

  •  1
  • Agi Hammerthief  · 技术社区  · 6 年前

    // Model the table
      Table tbl = new TableBuilder("Transactions")
        .addColumn(new ColumnBuilder("TransactionID", DataType.LONG).setAutoNumber(true))
        .addColumn(new ColumnBuilder("ControllerID", DataType.LONG).setAutoNumber(false))
        .addColumn(new ColumnBuilder("ReaderID", DataType.LONG).setAutoNumber(false))
        .addColumn(new ColumnBuilder("Event", DataType.LONG).setAutoNumber(false))
        .addColumn(new ColumnBuilder("Timestamp", DataType.SHORT_DATE_TIME).setAutoNumber(false))
        .addColumn(new ColumnBuilder("Number", DataType.LONG).setAutoNumber(false))
        .addIndex(new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME).addColumns("TransactionID").setPrimaryKey())
        .toTable(db);
      // Add the row
      Map<String, Object> values = new HashMap<>();
      values.put("ControllerID", cid);
      values.put("ReaderID", rid);
      values.put("Event", evtNum);
      values.put("Timestamp", ts); // Long; must be converted to DataType.SHORT_DATE_TIME
      values.put("Number", accNum);
      tbl.addRowFromMap(values);
    

    ts 转换为日期格式 MS Access理解 . MS Access中“Timestamp”列的类型为 Date/Time ,值以“YYYY-MM-dd HH:MM:ss”的形式显示。我需要做什么来转换 ts公司 ?

    This answer 对于一个类似的问题,提到了转换为 double (这是Access用来存储 日期/时间 字段),但我不明白我需要对代码做什么才能符合它:

    David W. Fenton ;2010年7月4日

    注: 我知道 how to convert a long to a java.util.Date , set the time for a java.util.Calendar , then get a human-readable/parsable formatted String from it

    1 回复  |  直到 6 年前
        1
  •  0
  •   Gord Thompson    6 年前

    Double 浮点数,您不需要自己进行转换;Jackcess将为您进行转换。只是通过一个 java.util.Date 去Jackcess,剩下的就交给它了。

    如果你的长 ts 是自Unix纪元(1970-01-01 00:00:00 UTC)以来的毫秒数

    values.put("Timestamp", new java.util.Date(ts));
    

    values.put("Timestamp", new java.util.Date(ts / 1000 * 1000));
    

    注意,这种转换将使用Java虚拟机(JVM)的当前时区。