zoukankan      html  css  js  c++  java
  • SQL Server 取日期时间格式 日期与字符串之间的转换

    SQL Server 取日期时间部分

     

    在本文中,GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate()  用DateName()就可以获得相应的年、月、日,然后再把它们连接起来就可以了:

    Select Datename(year,GetDate())+'-'+Datename (month,GetDate())+'-'+Datename(day,GetDate())

    另外,DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:

    Select Datename(hour,GetDate()) Select Datename(minute,GetDate()) Select Datename(second,GetDate()) Select Datename(weekDay,GetDate()) Select Datename(week,GetDate())

    SQL中的日期类型DateTime的默认格式就是yyyy-mm-dd hh:mi:ss: mmm,可大多数的情况我们只想得到他的日期部分,而不许要后面的时间。上一篇中提到用Datename()函数来截取拼接出不包含时间部分的日期,现在再说一种方法,更加简单的获取到不包含时间的日期!

    使用Convert()函数:

    select convert(char(10),GetDate(),120) as Date

    * 第3个参数就是用来设置日期类型数据的显示样式的,下面介绍几种样式的参数:

    100   mm dd yyyy

    101   mm/dd/yyyy

    102   yyyy.mm.dd

    103   dd/mm/yyyy

    106   dd mm yyyy

    108   hh:mi:ss(时间)

    111   yyyy/mm/dd

    112   yyyymmdd

    120   yyyy-mm-dd

    SELECT CONVERT(varchar(100), GETDATE(), 0) 05  9 2011  9:12AM
     SELECT CONVERT(varchar(100), GETDATE(), 1) 05/09/11
    SELECT CONVERT(varchar(100), GETDATE(), 2) 11.05.09
    SELECT CONVERT(varchar(100), GETDATE(), 3) 09/05/11
    SELECT CONVERT(varchar(100), GETDATE(), 4) 09.05.11
    SELECT CONVERT(varchar(100), GETDATE(), 5) 09-05-11
    SELECT CONVERT(varchar(100), GETDATE(), 6) 09 05 11
    SELECT CONVERT(varchar(100), GETDATE(), 7) 05 09, 11
    SELECT CONVERT(varchar(100), GETDATE(), 8) 09:13:14
    SELECT CONVERT(varchar(100), GETDATE(), 9) 05  9 2011  9:13:14:670AM
    SELECT CONVERT(varchar(100), GETDATE(), 10) 05-09-11
    SELECT CONVERT(varchar(100), GETDATE(), 11) 11/05/09
    SELECT CONVERT(varchar(100), GETDATE(), 12) 110509
    SELECT CONVERT(varchar(100), GETDATE(), 13) 09 05 2011 09:13:14:670
    SELECT CONVERT(varchar(100), GETDATE(), 14) 09:13:14:670
    SELECT CONVERT(varchar(100), GETDATE(), 20) 2011-05-09 09:13:14
    SELECT CONVERT(varchar(100), GETDATE(), 21) 2011-05-09 09:13:14.670
    SELECT CONVERT(varchar(100), GETDATE(), 22) 05/09/11  9:15:33 AM
    SELECT CONVERT(varchar(100), GETDATE(), 23) 2011-05-09
    SELECT CONVERT(varchar(100), GETDATE(), 24) 09:15:33
    SELECT CONVERT(varchar(100), GETDATE(), 25) 2011-05-09 09:15:33.140
    SELECT CONVERT(varchar(100), GETDATE(), 100) 05  9 2011  9:15AM
    SELECT CONVERT(varchar(100), GETDATE(), 101) 05/09/2011
    SELECT CONVERT(varchar(100), GETDATE(), 102) 2011.05.09
    SELECT CONVERT(varchar(100), GETDATE(), 103) 09/05/2011
    SELECT CONVERT(varchar(100), GETDATE(), 104) 09.05.2011
    SELECT CONVERT(varchar(100), GETDATE(), 105) 09-05-2011
    SELECT CONVERT(varchar(100), GETDATE(), 106) 09 05 2011
    SELECT CONVERT(varchar(100), GETDATE(), 107) 05 09, 2011
    SELECT CONVERT(varchar(100), GETDATE(), 108) 09:16:38
    SELECT CONVERT(varchar(100), GETDATE(), 109) 05  9 2011  9:16:38:543AM
    SELECT CONVERT(varchar(100), GETDATE(), 110) 05-09-2011
    SELECT CONVERT(varchar(100), GETDATE(), 111) 2011/05/09
    SELECT CONVERT(varchar(100), GETDATE(), 112) 20110509
    SELECT CONVERT(varchar(100), GETDATE(), 113) 09 05 2011 09:17:19:857
    SELECT CONVERT(varchar(100), GETDATE(), 114) 09:17:19:857
    SELECT CONVERT(varchar(100), GETDATE(), 120) 2011-05-09 09:17:19
    SELECT CONVERT(varchar(100), GETDATE(), 121) 2011-05-09 09:17:19.857
    SELECT CONVERT(varchar(100), GETDATE(), 126) 2011-05-09T09:17:19.857
    SELECT CONVERT(varchar(100), GETDATE(), 130)  6 ????? ??????? 1432  9:17:19:857AM
    SELECT CONVERT(varchar(100), GETDATE(), 131)  6/06/1432  9:17:19:857AM

    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

  • 相关阅读:
    URLEncoder编码算法
    传输层TCP和UDP的区别分析与应用场景
    【Android】AndroidStudio打包apk出现的一些问题 `Error:Execution failed for task ':app:lintVitalRelease'.
    【Android】在开发项目的时候,利用AndroidStudio开发工具,突然一直报错。
    【Android】listview 嵌套gridview报错,代码:”during second layout pass: posting in next frame
    华为荣耀5X(畅玩版 全网通)USB调试模式如何开启教程(开发者模式 开发者选项打开)
    Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习
    AndroidStudio中利用git下载github或者git.oschina的代码时报错:repository test has failed解决方法
    java最简单的知识之创建一个简单的windows窗口,利用Frame类
    【Android】java生成炫酷验证码,不区分大小写。登陆,发送手机验证码,防止注册机,android开发
  • 原文地址:https://www.cnblogs.com/jijm123/p/11245850.html
Copyright © 2011-2022 走看看