获取过去一个月、一天以及过去特定 24 小时期间的记录

发布于 2025-01-11 09:25:53 字数 432 浏览 0 评论 0原文

目前我有:

SELECT timeslot_start_time
    , name
    , description
    , etc
FROM Table1
WHERE Timeslot_start_time >= '2022-02-01' 
ORDER BY Timeslot_start_time

Q1。有没有办法让表自动获取从今天起一个月前的数据,而不是手动执行此操作?

Q2。此外,我的数据采用以下格式:22-02-15 21:45:00,每 15 分钟读取一次数据。有没有办法创建一个仅自动过滤过去 24 小时的列(/表或任何最好的列)?

Q3。此外,是否可以过滤过去 24 小时但从特定时间开始的时间。例如,过滤过去 24 小时截至晚上 10 点的数据,即晚上 10 点至晚上 10 点。

我希望这一切都有道理

At the moment I have:

SELECT timeslot_start_time
    , name
    , description
    , etc
FROM Table1
WHERE Timeslot_start_time >= '2022-02-01' 
ORDER BY Timeslot_start_time

Q1. Instead of doing this manually, is there a way the table only gets data that is a month old from today automatically?

Q2. Additionally, my data is in this format: 22-02-15 21:45:00, with data reading every 15 minutes. Is there a way I can create a column(/table or whatever is best) that filters only the last 24hours automatically?

Q3. Additionally, is it possible to filter the last 24hrs but from a specific time. For example filtering the last 24hrs up to 10pm, So 10pm-10pm.

I hope all of that makes sense

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

也只是曾经 2025-01-18 09:25:53

可以使用基本日期算术查询您的数据:

自动获取从今天起一个月前的数据?

“一个月”不明确(例如过去 30 天、上个月的所有日期等)。但最简单的定义是使用 dateadd 并让 SQL Server 决定:

WHERE timeslot_start_time >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP)

仅自动过滤过去 24 小时的内容?

WHERE timeslot_start_time >= DATEADD(DAY, -1, CURRENT_TIMESTAMP)

是否可以过滤过去 24 小时但从特定时间开始的情况。为了
例如过滤最后 24 小时直至晚上 10 点,即 10pm-10pm。

DECLARE @d2 DATETIME = DATETIMEFROMPARTS(
    DATEPART(YEAR, CURRENT_TIMESTAMP),
    DATEPART(MONTH, CURRENT_TIMESTAMP),
    DATEPART(DAY, CURRENT_TIMESTAMP),
    22,
    0,
    0,
    0
);
IF @d2 > CURRENT_TIMESTAMP
    -- if 10pm today is in the future then use yesterday
    SET @d2 = DATEADD(DAY, -1, @d2);

SELECT ...
WHERE timeslot_start_time >= DATEADD(DAY, -1, @d2)
AND   timeslot_start_time <  @d2

Your data could be queried using basic date arithmetic:

gets data that is a month old from today automatically?

"A month" is ambiguous (like past 30 days, all dates in previous month, etc). But most simple definition is to use dateadd and let SQL Server decide:

WHERE timeslot_start_time >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP)

that filters only the last 24hours automatically?

WHERE timeslot_start_time >= DATEADD(DAY, -1, CURRENT_TIMESTAMP)

is it possible to filter the last 24hrs but from a specific time. For
example filtering the last 24hrs up to 10pm, So 10pm-10pm.

DECLARE @d2 DATETIME = DATETIMEFROMPARTS(
    DATEPART(YEAR, CURRENT_TIMESTAMP),
    DATEPART(MONTH, CURRENT_TIMESTAMP),
    DATEPART(DAY, CURRENT_TIMESTAMP),
    22,
    0,
    0,
    0
);
IF @d2 > CURRENT_TIMESTAMP
    -- if 10pm today is in the future then use yesterday
    SET @d2 = DATEADD(DAY, -1, @d2);

SELECT ...
WHERE timeslot_start_time >= DATEADD(DAY, -1, @d2)
AND   timeslot_start_time <  @d2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文