设为首页 收藏本站
查看: 728|回复: 0

[经验分享] 【转】SQL Server中得到当前日期

[复制链接]

尚未签到

发表于 2016-11-2 03:50:21 | 显示全部楼层 |阅读模式
sqlserver中得到当前日期(convert函数,getdate函数)

当前日期select convert(varchar(30), getdate(), 111)


sqlserver中得到当前日期(convert函数,getdate函数)
函数getdate()的返回值在显示时只显示到秒。实际上,sql sever内部时间可以精确到毫秒级(确切地说,可以精确到3.33毫秒)。 ..类型0,9,和13总是返回四位的年。对其它类型,要显示世纪,把style值加上100。类型13和14返回24小时时钟的时间。类型0,7,和 13返回的月份用三位字符表示(用nov代表november).
对表11.1中所列的每一种格式,你可以把类型值加上100来显示有世纪的年(例如,00年将显示为2000年)。例如,要按日本标准显示日期,包括世纪,你应使用如下的语句:
select convert(varchar(30),getdate(),111)
在这个例子中,函数convert()把日期格式进行转换,显示为1997/11/30
要得到不同格式的日期和时间,你需要使用函数convert()。例如,当下面的这个语句执行时,显示的时间将包括毫秒:
select convert(varchar(30) getdate() 9)
注意例子中数字9的使用。这个数字指明了在显示日期和时间时使用哪种日期和时间格式。当这个语句执行时,将显示如下的日期和时间:
简体中文os:02   6 2007   4:33:56:530pm
英文os:nov 30 1997 3:29:55:170am
convert函数中的style参数提供了datetime或smalldatetime转换到char或varchar的多种日期显示格式。 style的数字参数决定日期被如何显示。年可以被显示成两位数(yy) 也可以显示成4位数(yyyy)。例如,将style参数赋值为100,可以得 到一个4位的年号,即包括世纪值(yyyy).
下表列出了style参数的可用值及可以使用的各种日期格式。当同smalldatetime类型一起使用style参数时,那些包括秒和毫秒的格式将在其位值显示零。

类型值          标准                                    输出   
0               default                                 mon dd yyyy hh:miam   
1               usa                                     mm/dd/yy  
2               ansi                                    yy.mm.dd  
3               british/french                          dd/mm/yy   
4               german                                  dd.mm.yy   
5               italian                                 dd-mm-yy   
6               -                                       dd mon yy   
7               -                                       mon dd yy   
8               -                                       hh:mi:ss  
9               default + millisecondsr11 mon           dd yyyy hh:mi:ss:mmmam(or )   
10              usa                                     mm-dd-yy   
11              japan                                   yy/mm/dd   
12              iso                                     yymmdd   
13              europe                                  default + millisecondsr11 dd mon yyyy     hh:mi:ss:mmm(24h)   
14              -                                       hh:mi:ss:mmm(24h)   
类型值前面加1,比如101 则显示 mm/dd/yyyy  

  

  

---------------------------------------------------------------------------------
有时侯在数据库的某些字段因特殊考虑的关系
这些字段是用char或nchar的格式来储存日期

如果希望将这些字段中转成一致的日期格式(如yyyy/mm/dd)
例如1988/1/1转成1988/01/01的话
请试着参考以下的语法…

select convert(varchar(10) convert(datetime employee_birthday 111) 111)
from employee


其它格式转换的范例如下:
--yyyy/mm/dd
select convert(varchar(10) getdate() 111)
--yyyymmdd
select convert(varchar(10) getdate() 112)
--hh:mm:ss
select convert(varchar(8) getdate() 108)
--hh:mm:ss:mmm
select convert(varchar(12) getdate() 114)

  


---------------------------------------------------------------------------------
如何用sql语言只获得数据库当前日期,且格式为" yyyy-mm-dd" ?
select convert(char(10) getdate() 120)

  


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

  

--日期转换参数 值得收藏
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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-294323-1-1.html 上篇帖子: Add new Item -> SQL Server 2008 Database.mdf 下篇帖子: 理解SQL Server 2000的信任连接(Trusted connection)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表