我有一個看起來像這樣的 SQL 服務器表
| 一個標題 | 另一個標題 |
|---|---|
| 202010 | 一種 |
| 202011 | 乙 |
| 202012 | C |
| 202101 | D |
| 202102 | 乙 |
| 202103 | F |
| 202104 | G |
| 202105 | H |
| 202106 | 一世 |
| 202107 | J |
| 202108 | 鉀 |
| 202109 | 升 |
| 202110 | 米 |
| 202111 | N |
monthid 是一列格式為 yyyymm 的整數資料型別。
我需要提取過去 12 個月的資料。
有人可以建議我怎么做嗎
uj5u.com熱心網友回復:
您可以使用以下查詢:
SELECT *
FROM YourTable
WHERE [A header] >= YEAR(DATEADD(month, -12, GETDATE())) * 100 MONTH(DATEADD(month, -12, GETDATE()))
資料庫<>小提琴
由于您將日期存盤為整數,這使情況變得更糟。相反,您應該將本月的最后一天存盤為date型別,然后您可以執行
WHERE [A header] >= DATEADD(month, -12, GETDATE()))
uj5u.com熱心網友回復:
將您的資料轉換為Pandas DataFrame. 您可以在此處查看如何操作。
# Convert date column to datetime
df['A header'] = pd.to_datetime(df['A header'], format='%Y%m')
# Sort and select last 12 months
df.sort_values(by='A header',ascending=True).set_index("A header").last("12M").reset_index()
| A header | Another header |
|:--------------------|:-----------------|
| 2020-12-01 00:00:00 | C |
| 2021-01-01 00:00:00 | D |
| 2021-02-01 00:00:00 | E |
| 2021-03-01 00:00:00 | F |
| 2021-04-01 00:00:00 | G |
| 2021-05-01 00:00:00 | H |
| 2021-06-01 00:00:00 | I |
| 2021-07-01 00:00:00 | J |
| 2021-08-01 00:00:00 | K |
| 2021-09-01 00:00:00 | L |
| 2021-10-01 00:00:00 | M |
| 2021-11-01 00:00:00 | N |
uj5u.com熱心網友回復:
您可以將該列轉換為datetime然后在查詢中使用它,如下所示:
SELECT *
FROM (
SELECT *, CONVERT(DATETIME, CONVERT(VARCHAR, A) '01') MethodIdDateTime FROM Sample
) e
WHERE
MethodIdDateTime >= DATEADD(MONTH, -12, GETDATE())
SQL小提琴
uj5u.com熱心網友回復:
我只修改了@Charlieface 查詢,
CREATE TABLE #YourTable (
"A header" INTEGER,
"Another header" VARCHAR(1)
);
INSERT INTO #YourTable
("A header", "Another header")
VALUES
('202010', 'A'),
('202011', 'B'),
('202012', 'C'),
('202101', 'D'),
('202102', 'E'),
('202103', 'F'),
('202104', 'G'),
('202105', 'H'),
('202106', 'I'),
('202107', 'J'),
('202108', 'K'),
('202109', 'L'),
('202110', 'M'),
('202111', 'N');
declare @To int =202012
declare @From int = format(dateadd(month,-12, cast(concat(@To,'01') as date)),'yyyyMM')
--select @From
SELECT *
FROM #YourTable
WHERE ([A header] >= @From and [A header]<=@To)
drop table #YourTable
uj5u.com熱心網友回復:
select *
from [TableName]
where convert(date,left(A header,4) '-
' right(A header,2) '-01')>DATEADD(month, -12, GETDATE())
Order by convert(date,left(A header,4) '-' right(A header,2) '-01') desc
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364285.html
標籤:sql-server 查询语句 时间
上一篇:XQuery檢索值
