zoukankan      html  css  js  c++  java
  • SQL Server 各种时间业务处理

    1.SQL 生成随机字符串作为流水号

    SELECT CONVERT(varchar(100), GETDATE(), 112)
      --年月日时分秒
     SELECT 'JS'+replace(CONVERT(varchar(10), GETDATE(), 112),'-','')
        +replace(CONVERT(varchar(10), GETDATE(), 108),':','')
        --随机英文字符
        select char(65+ceiling(rand()*25))+RIGHT(Char(65),30)
        select CEILING(rand()*10)
        --英文加数字 随机五位数字
        select UPPER( CHAR(65+CEILING(rand()*25)))+RIGHT(rand(),5)
        select UPPER( CHAR(65+CEILING(rand()*25)))+RIGHT(rand()*10,1)
        --字母+年月日时分秒+英文+数字 随机五位
         SELECT 'LS'+replace(CONVERT(varchar(10), GETDATE(), 112),'-','')
        +replace(CONVERT(varchar(10), GETDATE(), 108),':','')+UPPER( CHAR(65+CEILING(rand()*25)))+RIGHT(rand(),5)
        --字母+年月日时分秒+英文 多位随机英文位数+数字 随机3位
        SELECT 'LS'+replace(CONVERT(varchar(10), GETDATE(), 112),'-','')
        +replace(CONVERT(varchar(10), GETDATE(), 108),':','')
        +UPPER(CHAR(65+CEILING(RAND()*25))
        +CHAR( 65+CEILING(RAND()*25))
        +CHAR( 65+CEILING(RAND()*25))
        +CHAR( 65+CEILING(RAND()*25))
        )+RIGHT(rand(),3)

     

    2.SQL获取本周 上周 本月 上月  的开始时间和结束时间

                DECLARE @ThisWeekStartTime NVARCHAR(100),@ThisWeekEndTime NVARCHAR(100),--本周
                @LastWeekStartTime NVARCHAR(100),@LastWeekEndTime NVARCHAR(100),--上周
                @ThisMonthStartTime NVARCHAR(100),@ThisMonthEndTime  NVARCHAR(100),--本月
                @LastMonthSartTime NVARCHAR(100),@LastMonthEndTime NVARCHAR(100),--上月
                @LastestHalfYearStartTime NVARCHAR(100),@LastestHalfYearEndTime NVARCHAR(100),--近半年
                @LastestOneYearStartTime NVARCHAR(100),@LastestOneYearEndTime NVARCHAR(100)--近一年
                
        SELECT @ThisWeekStartTime= CONVERT(nvarchar(10), DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd, -1, getdate()) ), 0),121)--本周开始时间
        SELECT @ThisWeekEndTime= CONVERT(nvarchar(10), DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd, -1, getdate()) ), 6),121)--本周结束时间
        
        SELECT @LastWeekStartTime=  CONVERT(nvarchar(10),DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd, -7, getdate()) ), 0),121)--上周开始时间
        SELECT @LastWeekEndTime= CONVERT(nvarchar(10), DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd, -7, getdate()) ), 6),121)--上周结束时间
         
        SELECT @ThisMonthStartTime=CONVERT(nvarchar(10),dateadd(dd,-day(getdate())+1,getdate()),121)--本月开始时间
        SELECT @ThisMonthEndTime=CONVERT(nvarchar(10),dateadd(dd,-day(getdate()),dateadd(m,1,getdate())),121)--本月结束时间
        
        SELECT @LastMonthSartTime=CONVERT(nvarchar(10),dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())),121)--上月开始时间
        SELECT @LastMonthEndTime= CONVERT(nvarchar(10), dateadd(dd,-day(getdate()),getdate()),121) --上月结束时间
     
        SELECT @LastestHalfYearStartTime= CONVERT(nvarchar(10),  dateadd(dd,-day(dateadd(month,-6,getdate()))+1,dateadd(month,-6,getdate())) ,121)--近半年开始时间
        SELECT @LastestHalfYearEndTime=CONVERT(nvarchar(10), dateadd(dd,-day(getdate()),getdate()),121)--近半年结束时间
        
        SELECT @LastestOneYearStartTime= CONVERT(nvarchar(10), dateadd(dd,-day(dateadd(month,-12,getdate()))+1,dateadd(month,-12,getdate())) ,121)--近一年开始时间
        SELECT @LastestOneYearEndTime=CONVERT(nvarchar(10), dateadd(dd,-day(getdate()),getdate()),121)--近一年结束时间
    
    --当前时间 select getdate()
    --当前时间周的起始日期(以周一为例)select DATEADD(week,DATEDIFF(week,0,getdate()),0)
    --上周起始:select dateadd(week,-1,DATEADD(week,DATEDIFF(week,0,getdate()),0))
    --上上周起始:select dateadd(week,-2,DATEADD(week,DATEDIFF(week,0,getdate()),0))
    --上上上周起始:select dateadd(week,-3,DATEADD(week,DATEDIFF(week,0,getdate()),0))

    3. 开始时间和结束时间拼接一起

    SELECT CONVERT(nvarchar(10),dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())),121)+''+
      CONVERT(nvarchar(10), dateadd(dd,-day(getdate()),getdate()),121)--上月开始时间~结束时间 作为周期时间
    
    
     SELECT  @LastMonthTime=CONVERT(nvarchar(10),dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())),121)+''+
      CONVERT(nvarchar(10), dateadd(dd,-day(getdate()),getdate()),121)--上月开始时间~结束时间 作为周期时间
    --取年月格式
     SELECT  convert(VarChar(7), '2018-11-31 23:59:59',120)
    
    select  CONVERT(VarChar(7), GETDATE(), 120) 
    
    
    -- 分组查询统计 COUNT 中使用 case  when then end  
      select d.Name,
         count(case  when d.Name='A' then 'num'  end)as  AA,
         count(case  when d.Name='B' then 'num'  end)as  BB,
         count(case  when d.Name='C' then 'num'  end)as  CC,
         count(case  when d.Name='D' then 'num'  end)as  DD,
         count(case  when d.Name='E' then 'num'  end)as EE,
         count(case  when d.Name='F' then 'num'  end)as  FF,
         count(case  when d.Name='G' then 'num'  end)as  GG
         from  Brands d  
         group by d.Name

     

    --取年月日格式
      Select CONVERT(varchar(100), GETDATE(), 23)--2018-11-22
      Select CONVERT(varchar(100), '2018-11-31 23:59:59', 23)--2018-11-22
     Select CONVERT(varchar(10),'2018-11-01 23:59:59',120)+'-'+CONVERT(varchar(10),'2018-11-31 23:59:59',120) 

     

     

        --标准Update写法
        update A  SET  A.SettleState='已结算',A.SettleDate=getdate() FROM  OrderDetail A
        WHERE A.SettleState='待结算' 

     

  • 相关阅读:
    UNIX网络编程读书笔记:原始套接口
    UNIX网络编程读书笔记:UNIX域协议
    UNIX网络编程读书笔记:名字与地址转换
    链表的游标(cursor)实现
    基数排序
    UNIX网络编程读书笔记:基本SCTP套接口编程
    Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)
    git版本控制工具(二)----本地版本库的常用操作
    Android系列之Fragment(二)----Fragment的生命周期和返回栈
    Git版本控制工具(一)----git的安装及创建版本库
  • 原文地址:https://www.cnblogs.com/Warmsunshine/p/9994872.html
Copyright © 2011-2022 走看看