zoukankan      html  css  js  c++  java
  • TSQL日期相关

     转自网络

    1、日期格式化处理

    DECLARE @dt datetime
    SET @dt=GETDATE()

    --1.短日期格式:yyyy-m-d
    SELECT REPLACE(CONVERT(varchar(10),@dt,120),N'-0','-')

    --2.长日期格式:yyyy年mm月dd日
    --A. 方法1
    SELECT STUFF(STUFF(CONVERT(char(8),@dt,112),5,0,N'年'),8,0,N'月')+N'日'
    --B. 方法2
    SELECT DATENAME(Year,@dt)+N'年'+DATENAME(Month,@dt)+N'月'+DATENAME(Day,@dt)+N'日'

    --3.长日期格式:yyyy年m月d日
    SELECT DATENAME(Year,@dt)+N'年'+CAST(DATEPART(Month,@dt) AS varchar)+N'月'+DATENAME(Day,@dt)+N'日'

    --4.完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmm
    SELECT CONVERT(char(11),@dt,120)+CONVERT(char(12),@dt,114)

    2、日期推算处理

    DECLARE @dt datetime
    SET @dt=GETDATE()

    DECLARE @number int
    SET @number=3

    --1.指定日期该年的第一天或最后一天
    --A. 年的第一天
    SELECT CONVERT(char(5),@dt,120)+'1-1'

    --B. 年的最后一天
    SELECT CONVERT(char(5),@dt,120)+'12-31'


    --2.指定日期所在季度的第一天或最后一天
    --A. 季度的第一天
    SELECT CONVERT(datetime,
    CONVERT(char(8),
    DATEADD(Month,
    DATEPART(Quarter,@dt)*3-Month(@dt)-2,
    @dt),
    120)+'1')

    --B. 季度的最后一天(CASE判断法)
    SELECT CONVERT(datetime,
    CONVERT(char(8),
    DATEADD(Month,
    DATEPART(Quarter,@dt)*3-Month(@dt),
    @dt),
    120)
    +CASE WHEN DATEPART(Quarter,@dt) in(1,4)
    THEN '31'ELSE '30' END)

    --C. 季度的最后一天(直接推算法)
    SELECT DATEADD(Day,-1,
    CONVERT(char(8),
    DATEADD(Month,
    1+DATEPART(Quarter,@dt)*3-Month(@dt),
    @dt),
    120)+'1')


    --3.指定日期所在月份的第一天或最后一天
    --A. 月的第一天
    SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')

    --B. 月的最后一天
    SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')

    --C. 月的最后一天(容易使用的错误方法)
    SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))

    --4.指定日期所在周的任意一天
    SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)

    --5.指定日期所在周的任意星期几
    --A.  星期天做为一周的第1天
    SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)

    --B.  星期一做为一周的第1天
    SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)  


    ////////////////////////////////////////////////////////////////////////////////////////////////////

    1. 
    当前系统日期、时间 
          select getdate() 

    2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值
          例如:向日期加上2天
          select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000

    3. datediff 返回跨两个指定日期的日期和时间边界数。
          select datediff(day,'2004-09-01','2004-09-18')   --返回:17

    4. datepart 返回代表指定日期的指定日期部分的整数。
          select datepart(month, '2004-10-15')  --返回 10

    5. datename 返回代表指定日期的指定日期部分的字符串
          select datename(weekday, '2004-10-15')  --返回:星期五

    6. day(), month(),year() --可以与datepart对照一下

          select 当前日期=convert(varchar(10),getdate(),120),

                 当前时间=convert(varchar(8),getdate(),114)

          select datename(dw,'2004-10-15')

          select 本年第多少周=datename(week,'2004-10-15'),

                 今天是周几=datename(weekday,'2004-10-15')

     

    函数

    参数/功能

    GetDate( ) 

     返回系统目前的日期与时间

    DateDiff (interval,date1,date2)

     以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1

    DateAdd (interval,number,date)

     以interval指定的方式,加上number之后的日期

    DatePart (interval,date)

     返回日期date中,interval指定部分所对应的整数值

    DateName (interval,date)

     返回日期date中,interval指定部分所对应的字符串名称

     

    参数 interval的设定值如下:

    缩 写(Sql Server)

    (Access 和 ASP)

    说明

    Year

    Yy

    yyyy

    年 1753 ~ 9999

    Quarter

    Qq

    q  

    季 1 ~ 4

    Month

    Mm

    m  

    月1 ~ 12

    Day of year

    Dy

    一年的日数,一年中的第几日 1-366

    Day

    Dd

    d  

    日,1-31

    Weekday

    Dw

    w

    一周的日数,一周中的第几日 1-7

    Week

    Wk

    ww 

    周,一年中的第几周 0 ~ 51

    Hour

    Hh

    h  

    时0 ~ 23

    Minute

    Mi

    分钟0 ~ 59

    Second

    Ss

    s

    秒 0 ~ 59

    Millisecond

    Ms

    -

    毫秒 0 ~ 999

     

     

    SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm

    例如:

    select getdate()

    2004-09-12 11:06:08.177

    整理了一下SQL Server里面可能经常会用到的日期格式转换方法:

    举例如下:

    select CONVERT(varchar, getdate(), 120 )

    2004-09-12 11:06:08

    select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')

    20040912110608

    select CONVERT(varchar(12) , getdate(), 111 )

    2004/09/12

    select CONVERT(varchar(12) , getdate(), 112 )

    20040912

    select CONVERT(varchar(12) , getdate(), 102 )

    2004.09.12

    select CONVERT(varchar(12) , getdate(), 101 )

    09/12/2004

    select CONVERT(varchar(12) , getdate(), 103 )

    12/09/2004

    select CONVERT(varchar(12) , getdate(), 104 )

    12.09.2004

    select CONVERT(varchar(12) , getdate(), 105 )

    12-09-2004

    select CONVERT(varchar(12) , getdate(), 106 )

    12 09 2004

    select CONVERT(varchar(12) , getdate(), 107 )

    09 12, 2004

    select CONVERT(varchar(12) , getdate(), 108 )

    11:06:08

    select CONVERT(varchar(12) , getdate(), 109 )

    09 12 2004 1

    select CONVERT(varchar(12) , getdate(), 110 )

    09-12-2004

    select CONVERT(varchar(12) , getdate(), 113 )

    12 09 2004 1

    select CONVERT(varchar(12) , getdate(), 114 )

    11:06:08.177

  • 相关阅读:
    马拉车算法
    E. You 题解(思维)
    马拉车练习2
    The Boomsday Project 题解(玄学dp)
    Journey to Un'Goro 题解(思维+剪枝搜索)
    Black and white 题解(思维+prim)
    Rise in Price 题解(dp+随机数据)
    高斯消元
    马拉车练习1
    概率期望问题
  • 原文地址:https://www.cnblogs.com/andycai/p/1530463.html
Copyright © 2011-2022 走看看