zoukankan      html  css  js  c++  java
  • sqlserver 日期与字符串之间的转换

    字符转换为日期时,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

  • 相关阅读:
    第一周例行报告
    内置函数_map、filter
    时间戳
    模块_pip、os模块
    常用内置函数
    函数递归、列表推导式
    Python基础(六)_全局变量声明、可变参数、关键字参数
    Python基础(五) 函数
    python基础(四)集合
    Python基础(三)文件操作
  • 原文地址:https://www.cnblogs.com/shamo89/p/8052031.html
Copyright © 2011-2022 走看看