2015-08-13 101 views
2

我试图以毫秒级的精度在MySQL数据库中存储一些时间信息。我想要存储的格式是2015-08-13 10:56:24.570Java Spring - MySQL时间戳字段和毫秒精度

问题是,我必须创建具有长度属性的表列(3或6,取决于小数部分)。我用Java Spring Framework编写的应用程序会自动创建mysql表,如果它以前没有创建的话。但是我无法设置日期字段的长度属性。

@Column注释具有长度参数,但只有字符串字段才有意义。” Spring Jpa的文件说。

另一个有趣的部分是我不能使用@Temporal注释。我的IDE给出了一个错误,“注释@Temporal不允许用于这个位置”。我想知道为什么我也给这个错误。

任何帮助对我都很好。

编辑:创建MySQL表

@Entity 
@Table(name = "dbTable") 
public class Report 
{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 


    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name = "myDate", nullable = false, length = 6) 
    private java.util.Date date; 

    // Getters Setters etc. 

} 
+0

您正在使用的那一列的类型是什么? –

+0

并发布实体... –

+1

我尝试过“DATE,DATETIME,TIMESTAMP”。只要我不添加长度属性,它不会保存小数部分(毫秒)。 @AmitBhati – msaiducar

回答

1

我的Java代码做类型的列

的java.sql.Timestamp

同时存储在MySQL中的相关信息的时间。

简单的例子: -

public static void main(String[] args){ 
    System.out.println(java.sql.Timestamp.valueOf("2013-10-10 10:49:29.12000")); 
} 

Output:- 2013-10-10 10:49:29.12 

Read this,如果有帮助。

将列类型从java.util.Timestamp更改为java.sql.Timestamp。

+0

是的,你绝对是对的,我可以创建我的时间信息。但是当我尝试将它存储在MySQL数据库中时,保存“2013-10-10 10:49:29”。 – msaiducar

+0

粘贴你的问题中插入到MySQL数据库中的实体类。 –

+0

我认为你需要改变数据库列的数据类型。 –