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='待結算' 
相關文章
相關標籤/搜索