sql 查询入职日期,如何显示结果,(只知道入职日期)

shy_cai 2020-08-29 11:06:06
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




...全文
685 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 6 楼 shy_cai 的回复:
提示以下错误,你说的这个
我上面的表名是我测试写的,你把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
shy_cai 2020-09-02
  • 打赏
  • 举报
回复

提示以下错误,你说的这个


  • 打赏
  • 举报
回复
引用 4 楼 shy_cai 的回复:
怎样都没改对
你是要加365天吧?

WITH CTE
AS 
(SELECT [入职日期],DATEADD(dd,365,[入职日期]) AS 显示日期
FROM t1
)
SELECT CTE.入职日期,IIF(CTE.显示日期<'2020-01-01','2020-01-01',CTE.显示日期) 显示日期 FROM CTE
shy_cai 2020-09-01
  • 打赏
  • 举报
回复
怎样都没改对
  • 打赏
  • 举报
回复
再版主发的内容上再加个判断就行了。。

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
shy_cai 2020-08-31
  • 打赏
  • 举报
回复
引用 1 楼 吉普赛的歌 的回复:
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
*/


其实这不是我想要的,截止2020-01-01前的,我希望是 2020-01-01
吉普赛的歌 2020-08-29
  • 打赏
  • 举报
回复
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
*/

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧