【问题标题】:How do I group by day when the date is stored as a long?当日期存储为长时,如何按天分组?
【发布时间】:2010-10-11 08:44:15
【问题描述】:

我需要按天对查询进行分组,但日期存储为很长,我该如何使用 SQL 做到这一点?

我需要它来跨多个供应商工作 - oracle、db2、sql-server 和 mysql。

long 是毫秒,由 java.util.Date.getTime() 生成 - 我无法更改。

【问题讨论】:

  • 你用的是哪个RDBMS,能举个例子吗?
  • 长值如何映射到日期?自纪元以来的毫秒数?有什么不同?

标签: sql date group-by


【解决方案1】:

将日期列除以每天的基本时间单位数,向下取整。例如,如果您的基本单位是秒,那么您必须将日期列除以 24*60*60 = 86400。使用分组中的结果值。

请注意,如果您的时间源与天文时间同步(例如,您的系统时钟与 NTP 同步),这将失败,因为在这种情况下,每隔几年就会添加一个闰秒。如果是这种情况(通常是这样)并且您必须确保结果准确无误,那么您必须将日期列转换为字符串或数据库支持的日期格式。

这可能意味着添加另一个列或视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多