2010-06-21 88 views
4

!!重要! 找到解决方案,您需要使用sql.timestamp。虽然时间戳有两个问题。首先,如果您想将日期放入时间戳中,您需要执行以下操作:new Timestamp(date.getTime()。getTime()); 有点奇怪...Java/MySQL - 日期时间问题

此外,时间戳的月份从0开始,因此1月为0.这意味着23-02-2010在时间戳中表示23-01-2010。

谢谢大家。

!!重要!

我有一个关于Java与MySQL的问题。我制作了一张名为“Reserveringen”的表格。 该表有5列,如下所示。第2列和第3列都是日期时间类型(在Dreamcoder for mysql中制作)。但是你可以看到两者都没有显示任何时间。即使我使用Java从数据库中获取它们,如果我是正确的,它也会显示时间为23:00:00。从MySQL

Id vanaf  tot  klant_idmachine_id 
    9 12/3/2010 1/14/2011 6 29 
    8 1/3/2011 1/14/2011 6 27 
    2 1/14/2011 6/20/2010 6 9 
    3 1/14/2011 6/20/2010 6 11 
    4 1/14/2011 6/20/2010 6 19 
    5 1/14/2011 6/20/2010 6 21 
    6 1/14/2011 6/20/2010 6 23 
    7 1/14/2011 6/20/2010 6 25 
    1 1/14/3911 1/14/3911 6 5 

Tableinformation:

reserveringen 
Field Null Type Key Default Extra 
Id _ NO _ int(10) _ PRI _ _ _ 
vanaf _ YES _ datetime _ _ _ _ 
tot _ YES _ datetime _ _ _ _ 
klant_id _ YES _ int(10) _ MUL _ _ _ 
machine_id _ YES _ int(10) _ MUL _ _ _ 

任何解决方案?

+0

Java是否显示同一天?如果它显示前一天和23:00,它看起来像是一个时区问题 – 2010-06-21 07:15:44

+0

你需要检查mysql的列类型并发布一些你的java代码可能有帮助 – 2010-06-21 07:16:48

+0

@RC:这里的java代码不是问题,我知道这个是肯定的,如果我只是看调试。 @Lauri:我是gonne检查是否是同一天。时刻。 – Julian 2010-06-21 07:23:44

回答

3

使用时间戳,然后它会存储日期和时间,这样2010-06-21 13:28:17

java.util.Date today=new java.util.Date(); 
Timestamp currentTimestamp=new Timestamp(today.getTime()); 
PreparedStatement statement = dbConnection.prepareStatement("your query"); 
statement.setTimestamp(1, currentTimestamp); 
+0

@ Julian:答案对你有用。 – Paul 2010-06-21 07:47:59

+0

因此,不是使用日期/日历来放置数据我的数据库我应该使用时间戳? – Julian 2010-06-21 07:50:42

+0

因为我用hibernate做这个。我的Reservering(en)类有2个日期。我也试过用压光机,但仍然是我的数据库(即使我查看表格本身)在单元格中没有显示任何时间。 – Julian 2010-06-21 07:52:31

1

两个“vanaf”和“TOT”列正在使用MySQL的“日期时间”定义。此数据类型的确用于存储日期和时间信息,并且无法省略时间。请使用vanilla mysql命令行工具来验证表格的实际内容。

如果您只需要日期而没有时间: 您可以将数据库架构更改为使用'日期'列。 (见The DATETIME, DATE, and TIMESTAMP Types

+0

我需要日期和时间,这就是为什么我使用DATETIME。我如何使用vanilla mysql命令? – Julian 2010-06-21 07:53:47

+0

Nvm,得到了香草sql工作。我的时间都是00:00:00,所以我会尝试使用timestamp变量来插入它,而不是日期/日历。 – Julian 2010-06-21 07:58:40