【问题标题】:Best Way to store time (Only Time and Not date) in database在数据库中存储时间(只有时间而不是日期)的最佳方式
【发布时间】:2011-12-05 10:58:31
【问题描述】:

我正在使用 Java (J2SE) 开发应用程序。
我需要在数据库中存储一个时间(例如 16:30:12)。
当我需要存储日期(或日期+时间)时,我将其转换为 Unix 时间戳并将其存储为 Long 数字。
但是当我只需要时间而不需要日期和时间时,存储它的最佳方式是什么?
我使用SQLiteMS Access 作为DBMS。

谢谢

【问题讨论】:

    标签: java date time storing-data


    【解决方案1】:

    Java 8 以来的更好方法,或者在早期版本中使用Joda-Time 库:

    使用LocalTime 类并提取自午夜以来的秒数。您可以将其作为three bytes number (0 to 86399) 存储在您的数据库中(而不是八字节的日期时间)。

    https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html

    LocalTime time = LocalTime.parse("12:34:45");
    int secondOfDay = time.toSecondOfDay();
    // Save to database
    

    反转:

    // Get from database
    LocalTime time = LocalTime.ofSecondOfDay(secondOfDay);
    

    【讨论】:

      【解决方案2】:

      可以将时间存储为从空日期(1970 年 1 月 1 日,格林威治标准时间 00:00:00)开始的毫秒时间。 您将能够轻松地对数据库中的这个长数据字段进行比较操作。

      【讨论】:

        【解决方案3】:

        您可以存储为普通的String

        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
        String time = sdf.format(Calendar.getInstance());
        

        【讨论】:

        • 如果您打算在任何类型的计算中使用时间,这不是一个好主意。
        猜你喜欢
        • 1970-01-01
        • 2016-05-27
        • 2011-01-07
        • 2011-11-01
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 2021-01-27
        • 2016-02-19
        相关资源
        最近更新 更多