合同到期时间处理

Nekhlyudov 2018-05-28 03:25:37

如图所示,合同对应到期时间,如何利用到期时间和当天的时间差,得出“过期未签”“今天”“七天内”“30天内”“30天后”五个维度以及对应的合同数。
...全文
404 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2018-05-28
  • 打赏
  • 举报
回复
引用 2 楼 RomeoJJ 的回复:
[quote=引用 1 楼 sinat_28984567 的回复:]
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([合同ID] nvarchar(21),[到期日期] Date)
Insert #T
select N'A','2018/6/10' union all
select N'B','2018/6/1' union all
select N'C','2018/6/20' union all
select N'D','2018/7/10' union all
select N'E','2018/8/1' union all
select N'F','2018/5/25'
Go
--测试数据结束
SELECT *,
       CASE
           WHEN DATEDIFF(DAY, GETDATE(), 到期日期) < 0 THEN
               '过期未签'
           WHEN DATEDIFF(DAY, GETDATE(), 到期日期) = 0 THEN
               '今天'
           WHEN DATEDIFF(DAY, GETDATE(), 到期日期) > 0
                AND DATEDIFF(DAY, GETDATE(), 到期日期) < 7 THEN
               '七天内'
           WHEN DATEDIFF(DAY, GETDATE(), 到期日期) > 7
                AND DATEDIFF(DAY, GETDATE(), 到期日期) <= 30 THEN
               '30天内'
           ELSE
               '30天后'
       END
FROM #T;
有个问题,计数的时候如何计数呢,比如7天内也属于30天内[/quote] 把时间差算出来,然后计数的时候按照数量计,比如计30天内的,那就搜索时间差小于30的数量
Nekhlyudov 2018-05-28
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([合同ID] nvarchar(21),[到期日期] Date)
Insert #T
select N'A','2018/6/10' union all
select N'B','2018/6/1' union all
select N'C','2018/6/20' union all
select N'D','2018/7/10' union all
select N'E','2018/8/1' union all
select N'F','2018/5/25'
Go
--测试数据结束
SELECT *,
       CASE
           WHEN DATEDIFF(DAY, GETDATE(), 到期日期) < 0 THEN
               '过期未签'
           WHEN DATEDIFF(DAY, GETDATE(), 到期日期) = 0 THEN
               '今天'
           WHEN DATEDIFF(DAY, GETDATE(), 到期日期) > 0
                AND DATEDIFF(DAY, GETDATE(), 到期日期) < 7 THEN
               '七天内'
           WHEN DATEDIFF(DAY, GETDATE(), 到期日期) > 7
                AND DATEDIFF(DAY, GETDATE(), 到期日期) <= 30 THEN
               '30天内'
           ELSE
               '30天后'
       END
FROM #T;
有个问题,计数的时候如何计数呢,比如7天内也属于30天内
二月十六 2018-05-28
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([合同ID] nvarchar(21),[到期日期] Date)
Insert #T
select N'A','2018/6/10' union all
select N'B','2018/6/1' union all
select N'C','2018/6/20' union all
select N'D','2018/7/10' union all
select N'E','2018/8/1' union all
select N'F','2018/5/25'
Go
--测试数据结束
SELECT *,
CASE
WHEN DATEDIFF(DAY, GETDATE(), 到期日期) < 0 THEN
'过期未签'
WHEN DATEDIFF(DAY, GETDATE(), 到期日期) = 0 THEN
'今天'
WHEN DATEDIFF(DAY, GETDATE(), 到期日期) > 0
AND DATEDIFF(DAY, GETDATE(), 到期日期) < 7 THEN
'七天内'
WHEN DATEDIFF(DAY, GETDATE(), 到期日期) > 7
AND DATEDIFF(DAY, GETDATE(), 到期日期) <= 30 THEN
'30天内'
ELSE
'30天后'
END
FROM #T;


27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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