• SQL server 日期格式转换style 对应码


    sql日期格式化

     
    0   或   100   (*)     默认值   mon   dd   yyyy   hh:miAM(或   PM)     
      1   101   美国   mm/dd/yyyy     
      2   102   ANSI   yy.mm.dd     
      3   103   英国/法国   dd/mm/yy     
      4   104   德国   dd.mm.yy     
      5   105   意大利   dd-mm-yy     
      6   106   -   dd   mon   yy     
      7   107   -   mon   dd,   yy     
      8   108   -   hh:mm:ss     
      -   9   或   109   (*)     默认值   +   毫秒   mon   dd   yyyy   hh:mi:ss:mmmAM(或   PM)     
      10   110   美国   mm-dd-yy     
      11   111   日本   yy/mm/dd     
      12   112   ISO   yymmdd     
      -   13   或   113   (*)     欧洲默认值   +   毫秒   dd   mon   yyyy   hh:mm:ss:mmm(24h)     
      14   114   -   hh:mi:ss:mmm(24h)     
      -   20   或   120   (*)     ODBC   规范   yyyy-mm-dd   hh:mm:ss[.fff]     
      -   21   或   121   (*)     ODBC   规范(带毫秒)   yyyy-mm-dd   hh:mm:ss[.fff]     
      -   126(***)   ISO8601   yyyy-mm-dd   Thh:mm:ss:mmm(不含空格)     
      -   130*   科威特   dd   mon   yyyy   hh:mi:ss:mmmAM     
      -   131*   科威特   dd/mm/yy   hh:mi:ss:mmmAM   

    Sql Server 中一个非常强大的日期格式化函数
    Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
    Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
    Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
    Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
    Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
    Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
    Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
    Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
    Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
    Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
    Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
    Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
    Select CONVERT(varchar(100), GETDATE(), 12): 060516
    Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
    Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
    Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
    Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
    Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
    Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
    Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
    Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
    Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
    Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
    Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
    Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
    Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
    Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
    Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
    Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
    Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
    Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
    Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
    Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
    Select CONVERT(varchar(100), GETDATE(), 112): 20060516
    Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
    Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
    Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
    Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
    Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
    Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
    Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM


    常用:
    Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
    Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
    Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
    Select CONVERT(varchar(100), GETDATE(), 12): 060516
    Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16

    SQL中CONVERT转化函数的用法

    CONVERT的使用方法:

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

    格式:
    CONVERT(data_type,e­xpression[,style])

    说明:
    此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
    相互转换的时候才用到.

    例子:
    Select CONVERT(varchar(30),getdate(),101) now
    结果为
    now
    ---------------------------------------
    09/15/2001

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

    style数字在转换时间时的含义如下

    -------------------------------------------------------------------------------------------------
    Style(2位表示年份) | Style(4位表示年份) | 输入输出格式 
    -------------------------------------------------------------------------------------------------
    - | 0 or 100 | mon dd yyyy hh:miAM(或PM) 
    -------------------------------------------------------------------------------------------------
    1 | 101 | mm/dd/yy 
    -------------------------------------------------------------------------------------------------
    2 | 102 | yy-mm-dd 
    -------------------------------------------------------------------------------------------------
    3 | 103 | dd/mm/yy 
    -------------------------------------------------------------------------------------------------
    4 | 104 | dd-mm-yy 
    -------------------------------------------------------------------------------------------------
    5 | 105 | dd-mm-yy 
    -------------------------------------------------------------------------------------------------
    6 | 106 | dd mon yy 
    -------------------------------------------------------------------------------------------------
    7 | 107 | mon dd,yy 
    -------------------------------------------------------------------------------------------------
    8 | 108 | hh:mm:ss 
    -------------------------------------------------------------------------------------------------
    - | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)
    -------------------------------------------------------------------------------------------------
    10 | 110 | mm-dd-yy 
    -------------------------------------------------------------------------------------------------
    11 | 111 | yy/mm/dd 
    -------------------------------------------------------------------------------------------------
    12 | 112 | yymmdd 
    -------------------------------------------------------------------------------------------------
    - | 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24小时制) 
    -------------------------------------------------------------------------------------------------
    14 | 114 | hh:mi:ss:mmm(24小时制) 
    -------------------------------------------------------------------------------------------------
    - | 20 or 120 | yyyy-mm-dd hh:mi:ss(24小时制) 
    -------------------------------------------------------------------------------------------------
    - | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24小时制)

     
     

    --*  定义变量 

    declare @datetim date
    set @datetim = getdate()

    *--* eomonth函数求日期月份最后一天日期(sql 2012)

    SELECT EOMONTH (GETDATE()) --EOMONTH (@data, @num) num传入数值对应当前月份+num的月份

      

    *--* 获取当前年、月、日

    select year(getdate())
    select month(getdate())
    select day(getdate())

    *--* DATEDIFF() 函数

    select DATEDIFF(yy,'1900-01-01',getdate())--当前时间与1900-01-01差值(yy 单位年)

    *--* DATEADD() 函数在日期中添加或减去指定的时间间隔

    select DATEADD(mm,1,getdate())--mm表示月,结果为下一月份的当前时间

    select dateadd(dd,-day(getdate())+1,getdate())--当前月份第一天
    select DATEADD(mm, DATEDIFF(m,0,getdate()), 0)--当前月份第一天时分秒为00:00:00.000
    select dateadd(dd,-day(getdate()),getdate()) --上月份最后一天 
    select CONVERT(DATETIME, EOMONTH (GETDATE()), 120) --本月份最后一天(sql2012以上适用) 00:00:00.000
    select dateadd(mm, 1, dateadd(dd,-day(getdate())+1,getdate()))-1 --本月份最后一天 
    SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))--本月最后一天 时分秒为23:59:59.997

     *--*  convert 日期字符串相互转换。

    select CONVERT(DATETIME, '2019-01-02', 120) --结果 2019-01-02 00:00:00.000
    select CONVERT(VARCHAR(10), GETDATE(), 120)-- 结果 2019-07-23
    
    select CONVERT(DATETIME, '20190102', 112) --结果 2019-01-02 00:00:00.000
    select CONVERT(VARCHAR(9), GETDATE(), 112) --结果 20190723

    字符转换为日期时,Style的使用

    --1. Style=101时,表示日期字符串为:mm/dd/yyyy格式
    SELECT CONVERT(datetime,'11/1/2003',101)
    --结果:2003-11-01 00:00:00.000

    --2. Style=101时,表示日期字符串为:dd/mm/yyyy格式
    SELECT CONVERT(datetime,'11/1/2003',103)
    --结果:2003-01-11 00:00:00.000

    /*== 日期转换为字符串 ==*/
    DECLARE @dt datetime
    SET @dt='2003-1-11'

    --1. Style=101时,表示将日期转换为:mm/dd/yyyy 格式
    SELECT CONVERT(varchar,@dt,101)
    --结果:01/11/2003

    --2. Style=103时,表示将日期转换为:dd/mm/yyyy 格式
    SELECT CONVERT(varchar,@dt,103)
    --结果:11/01/2003


    /*== 这是很多人经常犯的错误,对非日期型转换使用日期的style样式 ==*/
    SELECT CONVERT(varchar,'2003-1-11',101)
    --结果:2003-1-11

    --1.
    /*--说明
    SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响
    但不影响明确指定了style的CONVERT处理。
    --*/

    --示例 ,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SET DATAFORMAT的影响,第二个CONVERT转换指定了style,转换结果受style的影响。
    --设置输入日期顺序为 日/月/年
    SET DATEFORMAT DMY

    --不指定Style参数的CONVERT转换将受到SET DATEFORMAT的影响
    SELECT CONVERT(datetime,'2-1-2005')
    --结果: 2005-01-02 00:00:00.000

    --指定Style参数的CONVERT转换不受SET DATEFORMAT的影响
    SELECT CONVERT(datetime,'2-1-2005',101)
    --结果: 2005-02-01 00:00:00.000
    GO

    --2.
    /*--说明

    如果输入的日期包含了世纪部分,则对日期进行解释处理时
    年份的解释不受SET DATEFORMAT设置的影响。
    --*/

    --示例,在下面的代码中,同样的SET DATEFORMAT设置,输入日期的世纪部分与不输入日期的世纪部分,解释的日期结果不同。
    DECLARE @dt datetime

    --设置SET DATEFORMAT为:月日年
    SET DATEFORMAT MDY

    --输入的日期中指定世纪部分
    SET @dt='01-2002-03'
    SELECT @dt
    --结果: 2002-01-03 00:00:00.000

    --输入的日期中不指定世纪部分
    SET @dt='01-02-03'
    SELECT @dt
    --结果: 2003-01-02 00:00:00.000
    GO

    --3.
    /*--说明

    如果输入的日期不包含日期分隔符,那么SQL Server在对日期进行解释时
    将忽略SET DATEFORMAT的设置。
    --*/

    --示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的SET DATEFORMAT设置下,其解释的结果是一样的。
    DECLARE @dt datetime

    --设置SET DATEFORMAT为:月日年
    SET DATEFORMAT MDY
    SET @dt='010203'
    SELECT @dt
    --结果: 2001-02-03 00:00:00.000

    --设置SET DATEFORMAT为:日月年
    SET DATEFORMAT DMY
    SET @dt='010203'
    SELECT @dt
    --结果: 2001-02-03 00:00:00.000

    --输入的日期中包含日期分隔符
    SET @dt='01-02-03'
    SELECT @dt
    --结果: 2003-02-01 00:00:00.000

    --以下示例演示了在不同的语言环境(SET LANGUAGE)下,DATENAME与CONVERT函数的不同结果。
    USE master

    --设置会话的语言环境为: English
    SET LANGUAGE N'English'
    SELECT 
    DATENAME(Month,GETDATE()) AS [Month],
    DATENAME(Weekday,GETDATE()) AS [Weekday],
    CONVERT(varchar,GETDATE(),109) AS [CONVERT]
    /*--结果:
    Month    Weekday   CONVERT
    ------------- -------------- -------------------------------
    March    Tuesday   Mar 15 2005 8:59PM
    --*/

    --设置会话的语言环境为: 简体中文
    SET LANGUAGE N'简体中文'
    SELECT 
    DATENAME(Month,GETDATE()) AS [Month],
    DATENAME(Weekday,GETDATE()) AS [Weekday],
    CONVERT(varchar,GETDATE(),109) AS [CONVERT]
    /*--结果
    Month    Weekday    CONVERT

  • 相关阅读:
    自己学习并保存的一些shell命令
    【Debian学徒记事】 Debian 安装源配置
    第十三周学习总结
    第十二周学习总结
    第十一周学习总结
    第十周CTF解答
    第十周学习总结
    第九周学习总结
    第八周学习总结
    动态规划:最大子串和
  • 原文地址:https://www.cnblogs.com/Alex80/p/12260000.html
Copyright © 2020-2023  润新知