如何从 db2 中的选定日期获取接下来 24 小时的所有数据?

Posted

技术标签:

【中文标题】如何从 db2 中的选定日期获取接下来 24 小时的所有数据?【英文标题】:How to get all data for next 24 hours from selected date in db2? 【发布时间】:2021-09-29 07:43:25 【问题描述】:

我在 db2 中有带有字段的数据库表

Date(Numeric) Time(Seconds) Account Amount
1191231 12453 24562 8500
1191231 16253 24562 7600
1200101 76253 24562 6500
1200101 92253 24562 2500
1200101 15253 24562 2500

这里的 1191231 表示 --> 2019-12-31 和 12000101 --> 2020-01-01

我想选择从时间 16200 到 1200101 到时间 16200 的 1191231 之间的所有数据。

简而言之,我想要从 1191231 的 16200(04:30 AM) 秒到 1200101 的 16200(04:30) 秒的数据......我希望你明白我的意思。

我想要的输出是

Date(Numeric) Time(Seconds) Account Amount
1191231 16253 24562 7600
1200101 15253 24562 2500

在此,我获得了 2019 年 12 月 31 日凌晨 4:30 到 2020 年 1 月 1 日凌晨 4:30 之间的数据(24 小时时间)

我用过这个 SQL 查询

select Date, Time, Account, Amount
from Customer
where account = '24562'
  and Date BETWEEN 1191231 AND 1200101
  and time > 16500

请帮我解决问题.....提前致谢。

【问题讨论】:

你试过的SQL是什么? Db2 的哪个版本和平台?请参阅***.com/help/how-to-ask 您提供初始 SQL 语句,社区帮助解决错误。 “92253”(第 4 行)几点了? DB2 确实有正确的日期和时间戳数据类型:ibm.com/docs/en/db2-for-zos/… @data_henrik 我已经使用了上述查询,但这仅过滤了从 2019-12-31 4:30 AM 到 2020-01-01 11:59 PM 的数据 @jarlh 我无法更改日期和时间的数据类型,我只能访问 DB2。 @data_henrik 92253 是以秒为单位的时间,16200 是凌晨 4:30 【参考方案1】:

试试这个:

WHERE BIGINT (DATE) * 86400 + TIME BETWEEN
BIGINT (1191231) * 86400 + 16200
AND
BIGINT (1200101) * 86400 + 16200

【讨论】:

以上是关于如何从 db2 中的选定日期获取接下来 24 小时的所有数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 HealthKit 从特定日期准确获取 24 小时的睡眠数据?

如何从 DB2 中的两个时间戳中获取差异?

如何在 java 上设置日期的 24 小时格式?

如何将具有 24 小时值的日期/时间字符串转换为 Pandas 中的日期时间?

如何从 iOS swift 中的日期获取 1 小时前?

如何将日期/时间从 24 小时格式转换为 12 小时 AM/PM? [复制]