sql 查詢入職日期,如何顯示結果,(只知道入職日期)
如
入職日期 顯示結果(始日期 )
2014/7/29 2020/1/1
2014/8/13 2020/1/1
2014/8/15 2020/1/1
2018/12/5 2020/1/1
2018/12/29 2020/1/1
2019/2/18 2020/2/18
2019/2/20 2020/2/20
2019/7/8 2020/7/7
2019/7/16 2020/7/15
2019/10/12 2020/10/11
2019/10/14 2020/10/13
uj5u.com熱心網友回復:
USE tempdb
GO
IF OBJECT_ID('dbo.[t]') IS NOT NULL
DROP TABLE dbo.[t]
GO
CREATE TABLE dbo.[t](
[入職日期] DATETIME
)
GO
SET NOCOUNT ON
INSERT INTO dbo.[t] VALUES(N'2014/7/29')
INSERT INTO dbo.[t] VALUES(N'2014/8/13')
INSERT INTO dbo.[t] VALUES(N'2014/8/15')
INSERT INTO dbo.[t] VALUES(N'2018/12/5')
INSERT INTO dbo.[t] VALUES(N'2018/12/29')
INSERT INTO dbo.[t] VALUES(N'2019/2/18')
INSERT INTO dbo.[t] VALUES(N'2019/2/20')
INSERT INTO dbo.[t] VALUES(N'2019/7/8')
INSERT INTO dbo.[t] VALUES(N'2019/7/16')
INSERT INTO dbo.[t] VALUES(N'2019/10/12')
INSERT INTO dbo.[t] VALUES(N'2019/10/14')
select [入職日期],DATEADD(DAY,-1,(DATEADD(YEAR,1,[入職日期]))) AS 顯示日期
from t
/*
入職日期 顯示日期
2014-07-29 2015-07-28
2014-08-13 2015-08-12
2014-08-15 2015-08-14
2018-12-05 2019-12-04
2018-12-29 2019-12-28
2019-02-18 2020-02-17
2019-02-20 2020-02-19
2019-07-08 2020-07-07
2019-07-16 2020-07-15
2019-10-12 2020-10-11
2019-10-14 2020-10-13
*/
uj5u.com熱心網友回復:
其實這不是我想要的,截止2020-01-01前的,我希望是 2020-01-01
uj5u.com熱心網友回復:
再版主發的內容上再加個判斷就行了。。
WITH CTE
AS
(SELECT [入職日期],DATEADD(DAY,-1,(DATEADD(YEAR,1,[入職日期]))) AS 顯示日期
FROM t
)
SELECT CTE.入職日期,IIF(CTE.顯示日期<'2020-01-01','2020-01-01',CTE.顯示日期) FROM CTE
uj5u.com熱心網友回復:
怎樣都沒改對uj5u.com熱心網友回復:
你是要加365天吧?
WITH CTE
AS
(SELECT [入職日期],DATEADD(dd,365,[入職日期]) AS 顯示日期
FROM t1
)
SELECT CTE.入職日期,IIF(CTE.顯示日期<'2020-01-01','2020-01-01',CTE.顯示日期) 顯示日期 FROM CTE
uj5u.com熱心網友回復:
提示以下錯誤,你說的這個
uj5u.com熱心網友回復:
我上面的表名是我測驗寫的,你把t1改回t再看看有沒有問題,你的資料庫版本是2005?
不行的話再用
WITH CTE
AS
(SELECT [入職日期],DATEADD(dd,365,[入職日期]) AS 顯示日期
FROM t
)
SELECT CTE.入職日期,(CASE WHEN CTE.顯示日期<'2020-01-01' THEN '2020-01-01' ELSE CTE.顯示日期 END) 顯示日期 FROM CTE
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/9777.html
標籤:疑難問題
上一篇:FineReport資料庫查詢陳述句 SQL查詢陳述句
下一篇:SQL 兩表相減
