H2 时间戳 - 始终插入(或获取)当前日期
Posted
技术标签:
【中文标题】H2 时间戳 - 始终插入(或获取)当前日期【英文标题】:H2 timestamp - Always inserting (or getting) the current Date 【发布时间】:2017-08-08 13:12:45 【问题描述】:我是 SpringBoot 的新手,我使用嵌入式 DB H2 创建了一个应用程序。
CREATE TABLE IF NOT EXISTS t_occurrence (
id bigint PRIMARY KEY,
where varchar(100),
when timestamp null
);
我使用这个类来插入值,但是无论我插入什么,当我做occurrence.getWhen()
时,我总是得到当前日期@
int numOfRowsAffected = jdbcTemplate.update(
"insert into t_occurrence (ID, where, when) "
+ " values (?,?,?);",
id,
occurrence.getWhere(),
occurrence.getWhen()
);
if (numOfRowsAffected==1) return id;
else return -1;
甚至硬编码时间
int numOfRowsAffected = jdbcTemplate.update(
"insert into t_occurrence (ID, where, when) "
+ " values (?,?,''2012-09-17 18:47:52.69');",
id,
occurrence.getWhere(),
occurrence.getWhen()
);
if (numOfRowsAffected==1) return id;
else return -1;
public class Occurrence
private Long id;
private Date when;
private String where;
public Long getId()
return id;
public void setId(Long id)
this.id = id;
public Date getWhen()
return when;
public void setWhen(Date when)
this.when = when;
public String getWhere()
return where;
public void setWhere(String where)
this.where = where;
【问题讨论】:
发生类中getWhen()
是如何定义的?
【参考方案1】:
当不使用“时间戳”时,您应该使用“日期”类型和“时间”类型
“时间戳”的类型是服务器自动通用的
【讨论】:
但 DateTime 在 H2 类型中不存在: INT 类型 BOOLEAN 类型 TINYINT 类型 SMALLINT 类型 BIGINT 类型 IDENTITY 类型 DECIMAL 类型 DOUBLE 类型 REAL 类型 TIME 类型 DATE 类型 TIMESTAMP 类型 TIMESTAMP WITH TIME ZONE 类型 BINARY 类型 OTHER 类型VARCHAR 类型 VARCHAR_IGNORECASE 类型 CHAR 类型 BLOB 类型 CLOB 类型 UUID 类型 ARRAY 类型 GEOMETRY 类型 H2类型有DATE类型和TIME类型 时间类型如 "hh:mm:ss" ,日期类型如 "yyyy-MM-dd" 但我还需要存储时间 创建两列...when01 Time,when02 DATE以上是关于H2 时间戳 - 始终插入(或获取)当前日期的主要内容,如果未能解决你的问题,请参考以下文章