设定时间不知道日期

时间:2012-08-25 15:40:17

标签: java mysql datetime

我希望能够将时间值存储在mysql数据库中,而无需实际知道与之关联的特定日期。我正在使用java.sql.time来存储数据。

long timeInMillis = 43200000; //This is 12 hours in milliseconds.    
Time time = new Time(timeInMillis);

无论出于何种原因,这给我的时间是07:00:00,应该是12:00:00。我假设这是因为在设置时间变量时,它基于特定日期之后的时间量。 如何在未实际使用预定义日期的情况下设置时间变量?

我这样做的原因是因为我想在数据库中存储一周和一个时间范围。因此,12:00之间的星期日在12:00:00和13:00:00之间为0。我希望能够将实际日期值与数据库进行比较,并查看日期是否介于基于日期星期几的时间段之间,而不管月份或年份。对于每个可能的工作日和时间,在数据库中存储完整日期将导致数千个不必要的条目。

2 个答案:

答案 0 :(得分:1)

  

无论出于何种原因,这给我的时间是07:00:00,应该是12:00:00。我假设这是因为在设置时间变量时它是基于特定日期之后的时间量

由于TimeZone差异可能会发生。保存和检索值时检查时区信息。

答案 1 :(得分:0)

这可能是一个时区问题,但我通过将时间值作为字符串传递到数据库中来解决问题。除非时区属性很重要,否则最好在这种情况下使用物理字符串。

String startTime = "12:00:00";
String endTime = 01:00:00;

如果时区很重要,我假设使用最佳方法,除非您正在预先设定日期对象,否则将直接在当前会话的mysql语句中设置时区。更多细节可以在这里找到:How do I set the time zone of MySQL?

编辑:最终结果显示这实际上不是时区问题(尽管在其他情况下可能是这样,所以不要诋毁调整时区)。我错误地计算了毫秒的时间。