【发布时间】:2019-07-12 01:56:39
【问题描述】:
我正在使用 SAP Advantage 中的一个表,其中包含单独的日期和时间字段。我想查找日期和时间在最近 5 分钟内的记录。
这在 99% 的情况下都有效:
SELECT
*
FROM
table_name
WHERE
TIMESTAMPDIFF(SQL_TSI_DAY, date_field, CURRENT_TIMESTAMP()) < 1
AND
TIMESTAMPDIFF(SQL_TSI_MINUTE, time_field, CURRENT_TIMESTAMP()) < 5
但是,这在午夜左右不起作用。例如,在上午 12:00,前一天晚上 11:57 创建的任何记录都不会匹配过滤器。
有什么想法吗?谢谢!
数据的示例图像。根据这些数据,在 2019 年 7 月 12 日凌晨 12:01,我想返回最后 2 行。
Created: 7/11/2019 22:54:43
Item EmpNo LastName FirstName date_field time_field
--------------------------------------------------------------------------
1 2 Nelson Roberto 7/11/2019 21:00:00
2 4 Young Bruce 7/11/2019 22:00:00
3 5 Lambert Kim 7/11/2019 23:00:00
4 8 Johnson Leslie 7/11/2019 23:56:00
5 9 Forest Phil 7/12/2019 00:00:00
【问题讨论】:
-
TIMESTAMP字段同时包含日期和时间。如果您不将它们分开,则不会存在此问题,因为针对当前时间戳的简单TIMESTAMPDIFF可以满足您的要求。你把这变成了一项相当复杂的任务。日期和时间列最初是如何存储的? (各个值的来源,以及它们是如何写入数据库的?)您能否edit 提供示例数据以及您希望从该数据中获得的输出? -
我没有创建表。它们是由第 3 方系统填充的“日期”和“时间”字段。
-
好的。同样,您能否提供示例数据以及您希望从该数据中获得的输出?
-
已编辑。谢谢。
-
我无法使用图像中的数据。我无法将其复制/粘贴到 ARC32 中并使用 CREATE TABLE 和 INSERT 从中创建表。右键单击列标题,选择导出为文本格式并将其显示在屏幕上,然后将包含列标题的数据复制/粘贴到您的帖子中。
标签: sql sap advantage-database-server