【问题标题】:How to SELECT timestamp for every 5 minutes from date in MS SQL Server?如何在 MS SQL Server 中每 5 分钟选择一次时间戳?
【发布时间】:2020-03-10 03:03:39
【问题描述】:

我正在使用 MS SQL Server,我需要只返回如下数据的 SELECT:

SELECT TOP 100000 [timestamp], [value] as fi500
FROM X
where timestamp>='2019-11-05' + 5 minute
order by timestamp

所以我得到了:

但我需要这样的:

有人可以帮帮我吗?

【问题讨论】:

  • 这里的大多数人都希望样本表数据和预期结果为格式化文本,而不是图像。
  • 您使用的是哪个 dbms?
  • 你的逻辑是什么?为什么 00:00:30 的值会显示在 00:05:00,而 00:00:40 的值会显示在 00:10:00 等?这对我来说没有意义。
  • 请不要在 'fi500' 上查看数据 - 这是来自 excel 的示例。巧合的是,00:00:30 的值与 00:05:00 的值相同。

标签: sql tsql timestamp where-clause


【解决方案1】:

您的代码看起来像 SQL Server。您可以使用datetimefromparts()

检查timestamp 是否满足您的条件
select top (100000) [timestamp], [value] as fi500
from X
where timestamp = datetimefromparts(2019, 11, 05,
                                    datepart(hour, timestamp),
                                    (datepart(minute, timestamp) / 5) * 5,
                                    0, 0
                                   )
order by timestamp;

【讨论】:

  • @bobialen,您能接受对您更有帮助的答案吗?我注意到您的四个问题尚未接受任何答案?
【解决方案2】:

可以在 WHERE 子句中使用 MOD。

如果时间戳存储为秒,它可能是

... WHERE MOD(timestamp, 300) = 0 ...

检查秒数是否能被 60*5 整除。

【讨论】:

    猜你喜欢
    • 2022-12-16
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多