2

我希望能够将时间值存储在 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 到 1 之间的星期日将是 12:00:00 到 13:00:00 之间的 0。我希望能够将实际日期值与数据库进行比较,并查看日期是否介于基于日期的时间段之间,无论月份或年份如何。在数据库中存储每个可能的工作日和时间的完整日期将导致数千个不必要的条目。

4

2 回答 2

1

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

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

于 2012-08-25T18:44:19.500 回答
0

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

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

如果时区很重要,除非您正在准备日期对象,否则我假设使用的最佳方法是直接在当​​前会话的 mysql 语句中设置时区。更多细节可以在这里找到:如何设置 MySQL 的时区?

编辑:最后证明这实际上不是时区问题(尽管在其他情况下可能是,所以不要抹黑调整时区)。我错误地计算了以毫秒为单位的时间。

于 2012-08-25T20:58:12.517 回答