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

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

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

    2./*== 日期转换为字符串 ==*/

     1 DECLARE @dt datetime
     2 SET @dt='2003-1-11'
     3 
     4 Style=101时,表示将日期转换为:mm/dd/yyyy 格式
     5   SELECT CONVERT(varchar,@dt,101)
     6   --结果:01/11/2003
     7 
     8 Style=103时,表示将日期转换为:dd/mm/yyyy 格式
     9   SELECT CONVERT(varchar,@dt,103)
    10   --结果:11/01/2003

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

     1 /*--说明
     2 SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响
     3 但不影响明确指定了style的CONVERT处理。
     4 --*/
     5 
     6 --示例 ,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SET DATAFORMAT的影响,第二个CONVERT转换指定了style,转换结果受style的影响。
     7 --设置输入日期顺序为 日/月/ 8 SET DATEFORMAT DMY
     9 
    10 --不指定Style参数的CONVERT转换将受到SET DATEFORMAT的影响
    11 SELECT CONVERT(datetime,'2-1-2005')
    12 --结果: 2005-01-02 00:00:00.000
    13 
    14 --指定Style参数的CONVERT转换不受SET DATEFORMAT的影响
    15 SELECT CONVERT(datetime,'2-1-2005',101)
    16 --结果: 2005-02-01 00:00:00.000
    17 GO
    第一种
     1 /*--说明
     2 如果输入的日期包含了世纪部分,则对日期进行解释处理时
     3 年份的解释不受SET DATEFORMAT设置的影响。
     4 --*/
     5 
     6 --示例,在下面的代码中,同样的SET DATEFORMAT设置,输入日期的世纪部分与不输入日期的世纪部分,解释的日期结果不同。
     7 DECLARE @dt datetime
     8 
     9 --设置SET DATEFORMAT为:月日年
    10 SET DATEFORMAT MDY
    11 
    12 --输入的日期中指定世纪部分
    13 SET @dt='01-2002-03'
    14 SELECT @dt
    15 --结果: 2002-01-03 00:00:00.000
    16 
    17 --输入的日期中不指定世纪部分
    18 SET @dt='01-02-03'
    19 SELECT @dt
    20 --结果: 2003-01-02 00:00:00.000
    21 GO
    第二种
     1 /*--说明
     2 如果输入的日期不包含日期分隔符,那么SQL Server在对日期进行解释时
     3 将忽略SET DATEFORMAT的设置。
     4 --*/
     5 
     6 --示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的SET DATEFORMAT设置下,其解释的结果是一样的。
     7 DECLARE @dt datetime
     8 
     9 --设置SET DATEFORMAT为:月日年
    10 SET DATEFORMAT MDY
    11 SET @dt='010203'
    12 SELECT @dt
    13 --结果: 2001-02-03 00:00:00.000
    14 
    15 --设置SET DATEFORMAT为:日月年
    16 SET DATEFORMAT DMY
    17 SET @dt='010203'
    18 SELECT @dt
    19 --结果: 2001-02-03 00:00:00.000
    20 
    21 --输入的日期中包含日期分隔符
    22 SET @dt='01-02-03'
    23 SELECT @dt
    24 --结果: 2003-02-01 00:00:00.000
    第三种
     1 --以下示例演示了在不同的语言环境(SET LANGUAGE)下,DATENAME与CONVERT函数的不同结果。
     2 USE master
     3 
     4 --设置会话的语言环境为: English
     5 SET LANGUAGE N'English'
     6 SELECT 
     7 DATENAME(Month,GETDATE()) AS [Month],
     8 DATENAME(Weekday,GETDATE()) AS [Weekday],
     9 CONVERT(varchar,GETDATE(),109) AS [CONVERT]
    10 /*--结果:
    11 Month         Weekday        CONVERT
    12 ------------- -------------- -------------------------------
    13 March         Tuesday        Mar 15 2005 8:59PM
    14 --*/
    15 
    16 --设置会话的语言环境为: 简体中文
    17 SET LANGUAGE N'简体中文'
    18 SELECT 
    19 DATENAME(Month,GETDATE()) AS [Month],
    20 DATENAME(Weekday,GETDATE()) AS [Weekday],
    21 CONVERT(varchar,GETDATE(),109) AS [CONVERT]
    22 /*--结果
    23 Month        Weekday          CONVERT
    24 ----------- ------------- ------------------
    25 03 星期五 03  3 2017  3:43:48:307PM
    26 --*/
     
  • 相关阅读:
    【译】在 Chrome 开发者工具中调试 node.js
    2015 年 JavaScript 开发者调查报告
    [译]PostCSS介绍
    [译] Angular 2 VS. React: 血色将至
    使用Fidder将生成环境代码映射到本地(文件夹)
    Sublime Text 3 搭建 React.js 开发环境
    用HTML5+JS开发跨平台的桌面应用
    npm WARN unmet dependency错误解决方法
    【数据结构与算法】线性表操作(C语言)
    【数据结构学习笔记】数组
  • 原文地址:https://www.cnblogs.com/Johnfx-home/p/6496990.html
Copyright © 2011-2022 走看看