sql查询数据枚举判断转换及取时间间隔内数据

 

例子:

SELECT u.U_ChineseName AS 处理人,case u.U_Region
when 1then '省公司'
when 2then '西安分公司'
when 3then '铜川分公司'
when 4then '咸阳分公司'
when 5then '宝鸡分公司'
when 6then '渭南分公司'
when 7then '汉中分公司'
when 8then '安康分公司'
when 9then '商洛分公司'
when 10then '榆林分公司'
when 11then '延安分公司'END AS 建设单位,u.U_OaDepartment AS 部门,u.U_OaGroup AS 专业室,td.Td_Title AS 待办标题,td.Td_ReceiveTime AS 发送时间
FROM T_Todo AS td,T_User AS u WHERE (td.Td_Title LIKE '%设计批复%' OR td.Td_Title LIKE '%终验批复%' ) AND td.Td_ActionTime IS NULL AND td.Td_DeleteTime IS NULL  
AND td.Td_Type=1  AND td.Td_ReceiveActorId IN (SELECT u.U_Id FROM T_User WHERE u.U_DeleteTime IS NULL)
AND( u.U_Role  LIKE '%50%' OR u.U_Role  LIKE '%49%') 
AND td.Td_ReceiveTime<=dateadd(day, -3, getdate()) 
ORDER BY u.U_Region 

 

① case when 枚举值 them 名称 

②接收时间小于等于当前时间三天内数据

  资料补充 ; --1.  当前系统日期、时间 select getdate() --2015-01-06 09:27:27.277   --2.时间操作 dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值 dateadd(datepart,number,date) 注:     datepart : year(yy, yyyy) | quarter(qq,q) | month(mm,m) | week(ww,wk) | day(dd,dy) | hour(h) | minute(mi,n) |  second (ss,s)| millisecond(ms)     date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。 例:     select getdate()                       select dateadd(year,1,getdate())    --2016-01-06 09:27:27.277      select dateadd(month,1,getdate())   --2017-02-06 09:27:27.277      select dateadd(day,1,getdate())     --2015-01-07 09:27:27.277     select dateadd(week,1,getdate())    --2015-01-13 09:27:27.277     select dateadd(weekday,1,getdate()) --2015-01-07 09:27:27.277     select dateadd(hour,1,getdate())    --2015-01-06 10:27:27.277     select dateadd(Minute,1,getdate())  --2015-01-06 09:28:27.277     select dateadd(Second,1,getdate())  --2015-01-06 09:28:28.277   --3. datediff 返回跨两个指定日期的日期和时间边界数。 datediff( date-part, startdate, enddate ) 注:     datepart : year(yy, yyyy) | quarter(qq,q) | month(mm,m) | week(ww,wk) | day(dd,dy) | hour(h) | minute(mi,n) |  second (ss,s)| millisecond(ms)     startdate 和 enddate 参数是合法的日期表达式。 返回值:(enddate)-(startdate) 例:  select datediff(year,getdate(),dateadd(year,2,getdate()))     --返回:2  SELECT FROM crm_contract where datediff(month,Subtime,getdate())=0  --查看crm_contract申请时间subtime是本月的数据    --4. datepart 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。 --如果需要得到自己需要的日期,则需要讲日期时间格式化 SELECT DATEPART(year, getdate())    as '年份'   SELECT DATEPART(month, getdate())   as '月份' SELECT DATEPART(day, getdate())     as '日期' SELECT DATEPART(week, getdate())    as  '本年第几周数' SELECT (DATEPART(weekday, getdate())-1)  as '今天是周几?'  SELECT DATEPART(hour, getdate())    as '小时' SELECT DATEPART(Minute, getdate())  as '分钟'  SELECT DATEPART(Second, getdate())  as '秒时'   --5. datename 返回代表指定日期的指定日期部分的字符串 SELECT datename(weekday, getdate())                  as '今天是星期几?' SELECT datename(month,convert(varchar(10), getdate(),126)) as '今天是几月份?' SELECT datename(day,convert(varchar(10), getdate(),126))   as '今天是几号?' SELECT datename(year,convert(varchar(10), getdate(),126))   as '今年是哪年?'   --上周周一 SELECT   DATEADD(wk,   DATEDIFF(wk,0,getdate()),-7) --上周周天 SELECT   DATEADD(wk,   DATEDIFF(wk,0,getdate()),-1) --.本周周一 SELECT   DATEADD(wk,   DATEDIFF(wk,0,getdate()),0) --.本周周天  select   dateadd(wk,datediff(wk,0,getdate()),6) --下周周一 select   dateadd(wk,datediff(wk,0,getdate()),7) --下周周天 select   dateadd(wk,datediff(wk,0,getdate()),13) --1.本月第一天   SELECT   DATEADD(mm,   DATEDIFF(mm,0,getdate()),   0)       --.本月最后一天   SELECT   dateadd(ms,-3,DATEADD(mm,   DATEDIFF(m,0,getdate())+1,   0))      --.本周星期一   SELECT   DATEADD(wk,   DATEDIFF(wk,0,getdate()),   0)     --.本周星期天    select   dateadd(wk,datediff(wk,0,getdate()),6)     --.本年第一天   SELECT   DATEADD(yy,   DATEDIFF(yy,0,getdate()),   0)      --.本年最后一天   SELECT   dateadd(ms,-3,DATEADD(yy,   DATEDIFF(yy,0,getdate())+1,   0))     --.本季度第一天   SELECT   DATEADD(qq,   DATEDIFF(qq,0,getdate()),   0)          --.当天的半夜   SELECT   DATEADD(dd,   DATEDIFF(dd,0,getdate()),   0)          --.上个月的最后一天   SELECT   dateadd(ms,-3,DATEADD(mm,   DATEDIFF(mm,0,getdate()),   0))          --.去年的最后一天   SELECT   dateadd(ms,-3,DATEADD(yy,   DATEDIFF(yy,0,getdate()),   0))             --.本月的第一个星期一   select   DATEADD(wk,   DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),   0)

资料原文:https://www.cnblogs.com/Li-yuan/p/6180391.html

上一篇:【Vegas原创】EXCEL光标所在的行自动变色


下一篇:Excel 2010 SQL应用074 DATEADD函数