我有一個具有以下值的表(為簡潔而減少)
-------- --------------------- --------------------- ---------------- ------------------
| Period | Periodfrom | Periodto | Glperiodoracle | Glperiodcalendar |
======== ===================== ===================== ================ ==================
| 88 | 2022-01-01 00:00:00 | 2022-01-28 00:00:00 | JAN-FY2022 | JAN-2022 |
-------- --------------------- --------------------- ---------------- ------------------
| 89 | 2022-01-29 00:00:00 | 2022-02-25 00:00:00 | FEB-FY2022 | FEB-2022 |
-------- --------------------- --------------------- ---------------- ------------------
| 90 | 2022-02-26 00:00:00 | 2022-04-01 00:00:00 | MAR-FY2022 | MAR-2022 |
-------- --------------------- --------------------- ---------------- ------------------
| 91 | 2022-04-02 00:00:00 | 2022-04-29 00:00:00 | APR-FY2022 | APR-2022 |
-------- --------------------- --------------------- ---------------- ------------------
| 92 | 2022-04-30 00:00:00 | 2022-05-27 00:00:00 | MAY-FY2022 | MAY-2022 |
-------- --------------------- --------------------- ---------------- ------------------
| 93 | 2022-05-28 00:00:00 | 2022-07-01 00:00:00 | JUN-FY2022 | JUN-2022 |
-------- --------------------- --------------------- ---------------- ------------------
| 94 | 2022-07-02 00:00:00 | 2022-07-29 00:00:00 | JUL-FY2022 | JUL-2022 |
-------- --------------------- --------------------- ---------------- ------------------
| 95 | 2022-07-30 00:00:00 | 2022-08-26 00:00:00 | AUG-FY2022 | AUG-2022 |
-------- --------------------- --------------------- ---------------- ------------------
| 96 | 2022-08-27 00:00:00 | 2022-09-30 00:00:00 | SEP-FY2022 | SEP-2022 |
-------- --------------------- --------------------- ---------------- ------------------
| 97 | 2022-10-01 00:00:00 | 2022-10-28 00:00:00 | OCT-FY2023 | OCT-2022 |
-------- --------------------- --------------------- ---------------- ------------------
我想創建一個存盤程序,在執行時(不接收引數)將根據執行日期回傳與 PeriodFrom 和 PeriodTo 之間的日期相對應的單行。
我有這樣的事情:
Select top 1 Period,
Periodfrom,
Periodto,
Glperiodoracle,
Glperiodcalendar
From Calendar_Period
Where Periodfrom <= getdate()
And Periodto >= getdate()
我知道使用BETWEEN可能會導致錯誤,但是考慮到秒數,這在邊緣情況下是否可行,對嗎?
uj5u.com熱心網友回復:
看起來 (i) 您的結束日期包括在內 (ii) 時間部分始終為 00:00。所以正確和最高效的查詢是:
where cast(getdate() as date) between Periodfrom and Periodto
例如,它將在當前時間為 時回傳第一行2022-01-28 23:59:59.999。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/492334.html
