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

Posted 圈圈小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于sql查询数据枚举判断转换及取时间间隔内数据的主要内容,如果未能解决你的问题,请参考以下文章

想用sql语句实现:查询出在最近10分钟(或一段时间区间内)插入数据库某个表的所有数据。

使用 T-SQL 将 OHLC-Stockmarket 数据分组到多个时间范围内

MySQL中判断日期间隔的方法

oracle db 如何用一条sql查询2个时间之间的工作时间间隔

将sql代码转换为linq(内连接查询)

使用 SQL 数据库查询以不同的时间间隔减去相同的列值