SqlServer时间日期函数
- 格式:docx
- 大小:17.58 KB
- 文档页数:4
sqlserveryear函数YEAR函数是SQL Server中一个用于提取日期/时间字段中的年份部分的函数。
它用于从日期/时间类型的字段中提取年份。
语法:YEAR (date)参数:- date: 必需参数,指定要从中提取年份的日期/时间字段。
返回值:YEAR函数返回一个整数,表示给定日期/时间字段的年份部分。
使用示例:假设有一个名为Orders的表,其中有一个名为OrderDate的日期字段,我们可以使用YEAR函数来提取年份,如下所示:SELECT OrderDate, YEAR(OrderDate) AS OrderYearFROM Orders这将返回一个结果集,包含OrderDate字段和一个名为OrderYear的新计算字段,其中OrderYear表示OrderDate字段中的年份部分。
其他用法示例:将结果集根据年份进行分组:SELECT YEAR(OrderDate) AS OrderYear, COUNT(*) AS TotalOrdersFROM OrdersGROUP BY YEAR(OrderDate)这将返回一个结果集,包含OrderYear字段和一个名为TotalOrders 的新计算字段,其中OrderYear表示OrderDate字段中的年份部分,TotalOrders表示每个年份对应的订单总数。
根据年份筛选记录:SELECT OrderID, OrderDateFROM OrdersWHERE YEAR(OrderDate) = 2024这将返回一个结果集,其中只包含OrderDate字段中年份为2024的记录。
总结:YEAR函数是SQL Server中非常有用的一个函数,可以用于提取日期/时间字段中的年份部分。
通过将YEAR函数与其他SQL操作(例如GROUP BY和WHERE子句)结合使用,我们可以对年份进行分组、筛选和聚合,以便更好地分析和处理数据。
SQL Server DAY函数介绍在SQL Server中,DAY函数是一种日期函数,用于提取给定日期中的天数。
本文将详细介绍SQL Server中的DAY函数,包括语法、用法示例以及一些常见问题和注意事项。
语法DAY函数的语法如下所示:DAY(date)其中,date参数是一个日期或日期时间类型的表达式,可以是一个具体的日期值或者是一个表示日期和时间的字符串。
示例示例1:提取日期中的天数下面的示例展示了如何使用DAY函数提取给定日期中的天数:SELECT DAY('2022-05-20') AS DayOfMonth;输出:DayOfMonth20在这个示例中,使用DAY函数从指定的日期中提取了月份,结果为20。
示例2:提取日期时间中的天数如果给定的表达式是一个日期时间类型,DAY函数将提取日期时间中的天数。
下面的示例展示了如何从日期时间值中提取天数:SELECT DAY('2022-05-20 10:30:15') AS DayOfMonth;输出:DayOfMonth20在这个示例中,DAY函数从指定的日期时间值中提取了天数,结果仍为20。
示例3:使用变量作为参数除了可以直接在查询中使用具体的日期值作为参数,还可以使用变量来传递日期参数。
下面的示例展示了如何使用变量作为DAY函数的参数:DECLARE @date VARCHAR(10) = '2022-05-20';SELECT DAY(@date) AS DayOfMonth;输出:DayOfMonth20在这个示例中,首先声明一个变量@date并赋值为一个具体的日期,然后使用该变量作为DAY函数的参数。
常见问题和注意事项1. 只能提取日期中的天数DAY函数只会返回一个整数值,即给定日期中的天数。
如果需要提取其他部分(如月份或年份),可以使用MONTH和YEAR函数。
2. 参数可为空DAY函数允许参数为空。
SQLSERVER中⽇期格式化,及GETDATE()、CONVERT()函数使⽤说明1. date和datetime类型的区别date是SQL Server 2008新引进的数据类型。
它表⽰⼀个⽇期,不包含时间部分,可以表⽰的⽇期范围从公元元年1⽉1⽇到9999年12⽉31⽇。
只需要3个字节的存储空间。
dateTime ⽇期和时间部分,可以表⽰的⽇期范围从公元1753年1⽉1⽇00:00:00.000 到9999年12⽉31⽇23:59:59.997 ,精确到3.33毫秒,它需要8个字节的存储空间。
2. GETDATE()函数,返回当前⽇期时间(datetime类型)例如创建表格M可以使⽤GETDATE()函数插⼊数据3. CONVERT()函数,格式化⽇期CONVERT() 函数是把⽇期转换为新数据类型的通⽤函数,也可以⽤不同的格式显⽰⽇期/时间数据。
语法:data_type(length) 规定⽬标数据类型(带有可选的长度)。
date指需要转换的值。
style 规定⽇期/时间的输出格式。
可以使⽤的 style 值:当前时间2017年1⽉3⽇ 09:09:10:037Style ID SQL对应格式1SELECT CONVERT(varchar(100), GETDATE(), 1);01/03/172SELECT CONVERT(varchar(100), GETDATE(), 2);17.01.033SELECT CONVERT(varchar(100), GETDATE(), 3);03/01/174SELECT CONVERT(varchar(100), GETDATE(), 4);03.01.175SELECT CONVERT(varchar(100), GETDATE(), 5);03-01-176SELECT CONVERT(varchar(100), GETDATE(), 6);03 01 177SELECT CONVERT(varchar(100), GETDATE(), 7);01 03, 178SELECT CONVERT(varchar(100), GETDATE(), 8);09:09:109SELECT CONVERT(varchar(100), GETDATE(), 9);01 3 2017 9:09:10:037AM10SELECT CONVERT(varchar(100), GETDATE(), 10);01-03-1711SELECT CONVERT(varchar(100), GETDATE(), 11);17/01/0312SELECT CONVERT(varchar(100), GETDATE(), 12);17010313SELECT CONVERT(varchar(100), GETDATE(), 13);03 01 2017 09:09:10:03714SELECT CONVERT(varchar(100), GETDATE(), 14);09:09:10:03720SELECT CONVERT(varchar(100), GETDATE(), 20);2017-01-03 09:09:1021SELECT CONVERT(varchar(100), GETDATE(), 21);2017-01-03 09:09:10.03722SELECT CONVERT(varchar(100), GETDATE(), 22);01/03/17 9:09:10 AM23SELECT CONVERT(varchar(100), GETDATE(), 23);2017-01-0324SELECT CONVERT(varchar(100), GETDATE(), 24);09:09:1025SELECT CONVERT(varchar(100), GETDATE(), 25);2017-01-03 09:09:10.037100SELECT CONVERT(varchar(100), GETDATE(), 100);01 3 2017 9:09AM101SELECT CONVERT(varchar(100), GETDATE(), 101);01/03/2017102SELECT CONVERT(varchar(100), GETDATE(), 102);2017.01.03103SELECT CONVERT(varchar(100), GETDATE(), 103);03/01/2017103SELECT CONVERT(varchar(100), GETDATE(), 103);03/01/2017Style ID SQL对应格式104SELECT CONVERT(varchar(100), GETDATE(), 104);03.01.2017105SELECT CONVERT(varchar(100), GETDATE(), 105);03-01-2017106SELECT CONVERT(varchar(100), GETDATE(), 106);03 01 2017107SELECT CONVERT(varchar(100), GETDATE(), 107);01 03, 2017108SELECT CONVERT(varchar(100), GETDATE(), 108);09:09:10109SELECT CONVERT(varchar(100), GETDATE(), 109);01 3 2017 9:09:10:037AM110SELECT CONVERT(varchar(100), GETDATE(), 110);01-03-2017111SELECT CONVERT(varchar(100), GETDATE(), 111);2017/01/03112SELECT CONVERT(varchar(100), GETDATE(), 112);20170103113SELECT CONVERT(varchar(100), GETDATE(), 113);03 01 2017 09:09:10:037114SELECT CONVERT(varchar(100), GETDATE(), 114);09:09:10:037120SELECT CONVERT(varchar(100), GETDATE(), 120);2017-01-03 09:09:10121SELECT CONVERT(varchar(100), GETDATE(), 121);2017-01-03 09:09:10.037126SELECT CONVERT(varchar(100), GETDATE(), 126);2017-01-03T09:09:10.037130SELECT CONVERT(varchar(100), GETDATE(), 130); 5 ???? ?????? 1438 9:09:10:037AM 131SELECT CONVERT(varchar(100), GETDATE(), 131);5/04/1438 9:09:10:037AM。
【转】sqlserver⽇期⽐较1. 当前系统⽇期、时间select getdate()2. dateadd 在向指定⽇期加上⼀段时间的基础上,返回新的 datetime 值例如:向⽇期加上2天select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.0003. datediff 返回跨两个指定⽇期的⽇期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:174. datepart 返回代表指定⽇期的指定⽇期部分的整数。
SELECT DATEPART(month, '2004-10-15') --返回 105. datename 返回代表指定⽇期的指定⽇期部分的字符串SELECT datename(weekday, '2004-10-15') --返回:星期五6. day(), month(),year() --可以与datepart对照⼀下select 当前⽇期=convert(varchar(10),getdate(),120),当前时间=convert(varchar(8),getdate(),114)7. select datename(dw,'2004-10-15')select 本年第多少周=datename(week,getdate()),今天是周⼏=datename(weekday,getdate())函数参数/功能GetDate( ) --返回系统⽬前的⽇期与时间DateDiff (interval,date1,date2) --以interval 指定的⽅式,返回date2 与date1两个⽇期之间的差值 date2-date1DateAdd (interval,number,date) --以interval指定的⽅式,加上number之后的⽇期DatePart (interval,date) ---返回⽇期date中,interval指定部分所对应的整数值DateName (interval,date) --返回⽇期date中,interval指定部分所对应的字符串名称参数 interval的设定值如下:值缩写(Sql Server) Access 和 ASP 说明Year Yy yyyy 年 1753 ~ 9999Quarter Qq q 季 1 ~ 4Month Mm m ⽉1 ~ 12Day of year Dy y ⼀年的⽇数,⼀年中的第⼏⽇ 1-366Day Dd d ⽇,1-31Weekday Dw w ⼀周的⽇数,⼀周中的第⼏⽇ 1-7Week Wk ww 周,⼀年中的第⼏周 0 ~ 51Hour Hh h 时0 ~ 23Minute Mi n 分钟0 ~ 59Second Ss s 秒 0 ~ 59Millisecond Ms - 毫秒 0 ~ 999access 和 asp 中⽤date()和now()取得系统⽇期时间;其中DateDiff,DateAdd,DatePart也同是能⽤于Access和asp中,这些函数的⽤法也类似举例:1.GetDate() ⽤于sql server :select GetDate()2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期⼀(周⽇为1,周六为7)DatePart('d','2005-7-25 22:56:32')返回值为 25即25号DatePart('y','2005-7-25 22:56:32')返回值为 206即这⼀年中第206天DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年SQL Server DATEPART() 函数返回 SQLServer datetime 字段的⼀部分。
sqlserver getdate 参数摘要:1.SQL Server 简介2.getdate() 函数的作用和用途3.getdate() 函数的参数4.SQL Server 中使用getdate() 函数的示例正文:1.SQL Server 简介SQL Server 是由微软公司开发的关系型数据库管理系统。
它可以在各种平台上运行,支持多种开发语言,如C#、 等。
SQL Server 提供了丰富的功能和高性能的数据处理能力,被广泛应用于企业级应用程序的开发和部署。
2.getdate() 函数的作用和用途在SQL Server 中,getdate() 函数用于获取当前系统日期和时间。
这个函数没有参数,返回的结果是一个日期时间值,格式为“YYYY-MM-DD HH:MI:SS”。
由于getdate() 函数获取的是系统时间,因此在跨时区或者涉及到夏令时的场景下,需要特别注意其返回的结果可能与实际期望的时间不符。
3.getdate() 函数的参数尽管getdate() 函数在SQL Server 中没有参数,但它可以通过与其他函数的组合使用,来实现对日期时间值的格式化和计算。
例如,可以使用DATEADD() 函数或者DATEDIFF() 函数来实现日期的加减运算,或者使用CAST() 函数和CONVERT() 函数来实现日期时间值的类型转换和格式化。
4.SQL Server 中使用getdate() 函数的示例在SQL Server 中,可以使用getdate() 函数来查询当前系统日期和时间。
例如,可以使用以下SQL 语句来获取当前时间:```SELECT GETDATE();```此外,getdate() 函数还可以与其他函数结合使用,实现更复杂的功能。
例如,可以使用以下SQL 语句来获取当前时间距离1970 年1 月1 日的毫秒数:```SELECT DATEDIFF(MILLISECOND, GETDATE(), "1970-01-0100:00:00");```或者,可以使用以下SQL 语句来获取当前时间距离1970 年1 月1 日以来的秒数:```SELECT DATEDIFF(SECOND, GETDATE(), "1970-01-01 00:00:00");```总的来说,SQL Server 中的getdate() 函数是一个非常实用的工具,可以帮助开发人员获取和处理系统日期时间信息。
Sqlserver常见字符串/日期处理函数1:字符串比较函数①:charindex(<’substring_expression’>,<expression>)其中substring _expression 是所要查找的字符,expression 可为字符串也可为列名表达式。
如果没有发现子串,则返回值。
select charindex('弹弹堂',title)from news--每行title列里面‘弹弹堂’出现的位置select charindex('异界逍遥','abcd异界逍遥')--结果:5②:PATINDEX (<’%substring _expression%’>,<expression>)定义和charindex相同,区别:PA TINDEX函数支持使用通配符,可以用在很多有变化的查找中。
而CHARINDEX不可以--匹配含有‘异界’的字符串select patindex('%异界%','abcd异界逍遥')--结果:5--匹配以‘异界’开头的字符串select patindex('异界%','abcd异界逍遥')--结果:0select patindex('异界%','异界逍遥')--结果:1--匹配含有‘Bread’或‘bread’的字符串select patindex('%[b,B]read%','eat bread Bread')--结果:52:字符串处理函数①:STUFF(<character_expression1>,<start_ position>,<length>,<character_expression2>) 用另一子串替换字符串指定位置、长度的子串。
SQLserver--时间⽇期函数、类型转换⼀、时间⽇期函数1、SET DATEFIRST 1 --设置星期⼀为第⼀天--datepart函数,返回时间⽇期中的某⼀个部分--参数1是指返回哪⼀个部分,dw表⽰dayofweek--参数2是指哪个时间⽇期⾥⾯去返回--datefirst是系统常量,在使⽤时需要加上@@SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today'--getdate指在执⾏时获取当前系统时间SELECT GETDATE()--在执⾏时取当前系统时间2、--dateadd 对某⼀个部分添加或者减去多少时间--参数1 是对哪⼀个部分进⾏添加或减少--参数3 是在哪⼀个时间⽇期上进⾏增加或减少--参数2 是增加或减去多少select DATEADD(YEAR,-2,'2015-11-20')select DATEADD(MONTH,3,'2015-11-20')select DATEADD(DAY,5,'2015-11-20')3、--datediff 算时间差 different 不同的,相差的--参数1 是指对哪⼀个部分进⾏算法--参数2 是开始的时间⽇期--参数3 是结束的⽇期select DATEDIFF(YEAR,'2011-1-2','2015-2-2') --年份相差select DATEDIFF(MONTH,'2011-1-2','2015-2-2')--⽉份相差(算上中间所有⽉份)select DATEDIFF(DAY,'2011-1-2','2015-2-2')--⽇相差(算上中间所有⽇)4、计算恋爱的天数declare @startday varchar(50) --声明变量时需要添加数据类型,变量名前加@set @startday = '2008-8-8' --设置变量的值--getdate是获取当前系统时间select DATEDIFF(DAY,@startday,GETDATE()) as 恋爱天数5、--datepart 返回时间⽇期的某⼀个部分--参数1是返回的哪⼀个部分--参数2是以哪个⽇期作为被计算的⽇期select DATEPART(YEAR,'2008-8-8')--返回年select DATEPART(DY,'2008-8-8')--返回dayofyear 这⼀年的第⼏天select DATEPART(QQ,'2008-8-8')--返回季度共四个季度--day month year 相当于上⾯的datepart--返回天,⽉,年select DAY('2008-8-8')select year('2008-8-8')select month('2008-8-8')6、--isdate 判断时间⽇期格式是否是正确--返回值为1表⽰正确--返回值为0表⽰错误select ISDATE('2012-2-29')select ISDATE('2008-80-8')--sysdatetime 系统精确时间select SYSDATETIME()SELECT GETDATE()-- 区别是精确与否⼆、类型转换函数--数据类型转换 cast convert--cast 先写被转换的value + as + 被转换成的类型select CAST(1.73 as int)select CAST(1.73 as varchar(50))select CAST(1.73333333 as decimal(18,2))select cast(CAST('1.78' as decimal(18,2)) as int)select CAST('1.78' as decimal(18,2))--convert 参数1是需要转换成为的类型,参数2是需要被转换的valueselect CONVERT(int , '87')select CONVERT(decimal(18,2) , '87.8787')--在精确后⾯位数的时候会⾃动四舍五⼊select CONVERT(varchar(50) , 342523.234)。
sqlserver now函数SQL Server 中的 NOW() 函数是非常重要的函数之一。
它返回当前的日期和时间。
该函数常常用于记录数据库的操作时间,或者是实现定时功能等场景。
那么,下面我将介绍 SQL Server NOW() 函数的详细使用方法。
1. 语法NOW() 函数的语法如下:SELECT NOW();这样,就可以在 SQL Server 中使用 NOW() 函数返回当前日期和时间。
2. 返回值NOW() 函数返回值的格式是 DATETIME,包括日期和时间,格式为'YYYY-MM-DD HH:MI:SS'。
3. 示例以下是一个 NOW() 函数的实际示例。
假设有个表 orders,我们要在其中插入一行数据,并记录创建该行数据的时间戳。
INSERT INTO orders (product_name, quantity, created_at) VALUES ('Apple', 10, NOW());这样,就成功地将产品名字为 Apple,数量为 10 ,时间戳为当前时间的订单记录插入到了 orders 表中。
4. 日期和时间的处理SQL Server 中可以使用各种函数进行日期和时间的处理。
下面是常用的日期和时间函数。
DATEADD(datepart, number, date):在日期上添加一个指定的时间间隔。
DATEDIFF(datepart, startdate, enddate):返回两个日期之间的时间间隔。
DATEPART(datepart, date):从日期中获取指定部分(年、月、日等)的值。
GETDATE():返回当前的日期和时间,以 DATETIME 格式。
YEAR(date):从日期中返回年份。
MONTH(date):从日期中返回月份。
DAY(date):从日期中返回天数。
DATEFROMPARTS(year, month, day):根据给定的年份、月份和日期创建日期值。
DATEPART返回代表指定日期的指定日期部分的整数。
语法DATEPART ( datepart ,date )参数datepart是指定应返回的日期部分的参数。
下表列出了Microsoft® SQL Server™ 识别的日期部分和缩写。
week(wk, ww) 日期部分反映对 SET DATEFIRST 作的更改。
任何一年的 1 月 1 日定义了week日期部分的开始数字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此处 xxxx 代表任一年。
weekday (dw) 日期部分返回对应于星期中的某天的数,例如:Sunday = 1、Saturday = 7。
weekday日期部分产生的数取决于 SET DATEFIRST 设定的值,此命令设定星期中的第一天。
date是返回datetime或smalldatetime值或日期格式字符串的表达式。
对 1753 年 1 月 1 日之后的日期用datetime 数据类型。
更早的日期存储为字符数据。
当输入datetime值时,始终将其放入引号中。
因为smalldatetime只精确到分钟,所以当用smalldatetime值时,秒和毫秒总是 0。
如果只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。
大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。
例如,如果two digit year cutoff 为 2049 (默认),则 49 被解释为 2049,2050 被解释为1950。
为避免模糊,请使用四位数的年份。
有关时间值指定的更多信息,请参见时间格式。
有关日期指定的更多信息,请参见 datetime 和 smalldatetime。
返回类型int注释DAY、MONTH、和 YEAR 函数分别是 DATEPART(dd, date)、DATEPART(mm, date)、和 DATEPART(yy, date) 的同义词。
SQLSERVER⽇期函数详细⽤法1.⼀个⽉第⼀天的Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)2.本周的星期⼀Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)3.⼀年的第⼀天Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)4.季度的第⼀天Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)5.当天的半夜Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)6.上个⽉的最后⼀天复制保存Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))7.去年的最后⼀天Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))8.本⽉的最后⼀天Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))9.本年的最后⼀天Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))10.本⽉的第⼀个星期⼀select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)返回当前⽇期和时间通过函数GETDATE(),你可以获得当前的⽇期和时间。
函数GETDATE()可以⽤来作为DATEDIME型字段的缺省值。
这对插⼊记录时保存当时的时间是有⽤的。
要建⽴⼀个表,其中的记录包含有当前的⽇期和时间,可以添加⼀个DATETIME型字段,指定其缺省值为函数GETDATE()的返回值,就象这样:Create TABLE site_log (username VARCHAR(40),useractivity VARCHAR(100),entrydate DATETIME DEFAULT GETDATE())转换⽇期和时间函数GETDATE()的返回值在显⽰时只显⽰到秒。
1、常用日期方法(下面的GetDate() = '2006-11-08 13:37:56.233')(1)DATENAME ( datepart ,date )返回表示指定日期的指定日期部分的字符串。
Datepart详见下面的列表.SELECT DateName(day,Getdate()) -返回8(2)DATEPART ( datepart , date )返回表示指定日期的指定日期部分的整数。
SELECT DATEPART(year,Getdate()) -返回2006(3)DATEADD (datepart , number, date )返回给指定日期加上一个时间间隔后的新datetime 值。
SELECT DATEADD(week,1,GetDate()) --当前日期加一周后的日期(4)DATEDIFF ( datepart , startdate , enddate )返回跨两个指定日期的日期边界数和时间边界数。
SELECT DATEDIFF(month,'2006-10-11','2006-11-01') --返回1(5)DAY ( date )返回一个整数,表示指定日期的天datepart 部分。
SELECT day(GetDate()) -返回8(6)GETDATE()以datetime 值的SQL Server 2005 标准内部格式返回当前系统日期和时间。
SELECT GetDate() --返回2006-11-08 13:37:56.233(7)MONTH ( date )返回表示指定日期的"月"部分的整数。
SELECT MONTH(GETDATE()) --返回11(8)YEAR ( date )返回表示指定日期的"年"部分的整数。
SELECT YEAR(GETDATE()) --返回20062、取特定日期(1)获得当前日期是星期几SELECT DateName(weekday,Getdate()) --Wednesday(2)计算哪一天是本周的星期一SELECT DATEADD(week, DATEDIFF(week,'1900-01-01',getdate()), '1900-01-01') --返回2006-11-06 00:00:00.000或SELECT DATEADD(week, DATEDIFF(week,0,getdate()),0)(3)当前季度的第一天SELECT DATEADD(quarter, DATEDIFF(quarter,0,getdate()), 0)-返回2006-10-01 00:00:00.000 (4)如何取得某个月的天数SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,'2006-02-03')+1,0))) -返回28(5)一个季度多少天declare @m tinyint,@time smalldatetimeselect @m=month(getdate())select @m=case when @m between 1 and 3 then 1when @m between 4 and 6 then 4when @m between 7 and 9 then 7else 10 endselect @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'select datediff(day,@time,dateadd(mm,3,@time)) -返回92(6)获得年月日(yyyy-MM-dd)SELECT CONVERT(VARCHAR(10),GETDATE(),120) -返回2006-11-083、其它(1)--下面的示例将日期指定为数字。
数据库引擎将0 解释为1900 年1 月1 日。
SELECT MONTH(0), DAY(0), YEAR(0) -返回1 1 1900--下面两句是等效的SELECT DATENAME(WEEKDAY,0)SELECT DATENAME(WEEKDAY,'1900-01-01')(2)SET DATEFIRST { number | @number_var }将一周的第一天设置为从1 到7 的一个数字。
SET DATEFIRST 1 --表示一周的第一天是"星期一"SELECT DATENAME(WEEKDAY,GETDATE()) --WednesdaySELECT DATEPART(weekday,GETDATE()) --返回3--查看当前设置情况select @@DATEFIRST(3)SET DATEFORMAT { format | @format_var }设置用于输入datetime 或smalldatetime 数据的日期部分(月/日/年)的顺序。
...有效参数包括mdy、dmy、ymd、ydm、myd 和dym。
...该设置仅用在将字符串转换为日期值时的解释中。
它不影响日期值的显示。
...SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。
...SET DATEFORMAT 将覆盖SET LANGUAGE 的隐式日期格式设置。
下面是例子:-- Set date format to year, day, month.SET DATEFORMAT ydm;GODECLARE @datevar DATETIME;SET @datevar = '1998/31/12';SELECT @datevar AS DateVar;GO-- Set date format to year, month, day.SET DATEFORMAT ymd;GODECLARE @datevar DATETIME;SET @datevar = '1998/12/31';SELECT @datevar AS DateVar;GO(4)日期部分的列表日期部分缩写yearyy, yyyyquarterqq, qmonthmm, mdayofyeardy, ydaydd, dweekwk, wwweekdaydwhourhhminutemi, nsecondss, smillisecondms数据类型范围精确度datetime1753 年1 月1 日到9999 年12 月31 日3.33 毫秒smalldatetime1900 年1 月1 日到2079 年6 月6 日1 分钟用法示例:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2008 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/08Select CONVERT(varchar(100), GETDATE(), 2): 08.05.16Select CONVERT(varchar(100), GETDATE(), 3): 16/05/08Select CONVERT(varchar(100), GETDATE(), 4): 16.05.08Select CONVERT(varchar(100), GETDATE(), 5): 16-05-08Select CONVERT(varchar(100), GETDATE(), 6): 16 05 08Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 08Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2008 10:57:46:827AM Select CONVERT(varchar(100), GETDATE(), 10): 05-16-08Select CONVERT(varchar(100), GETDATE(), 11): 08/05/16Select CONVERT(varchar(100), GETDATE(), 12): 080516Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2008 10:57:46:937Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967Select CONVERT(varchar(100), GETDATE(), 20): 2008-05-16 10:57:47Select CONVERT(varchar(100), GETDATE(), 21): 2008-05-16 10:57:47.157Select CONVERT(varchar(100), GETDATE(), 22): 05/16/08 10:57:47 AMSelect CONVERT(varchar(100), GETDATE(), 23): 2008-05-16Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47Select CONVERT(varchar(100), GETDATE(), 25): 2008-05-16 10:57:47.250Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2008 10:57AMSelect CONVERT(varchar(100), GETDATE(), 101): 05/16/2008Select CONVERT(varchar(100), GETDATE(), 102): 2008.05.16Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2008Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2008Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2008Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2008Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2008Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2008 10:57:49:437AMSelect CONVERT(varchar(100), GETDATE(), 110): 05-16-2008Select CONVERT(varchar(100), GETDATE(), 111): 2008/05/16Select CONVERT(varchar(100), GETDATE(), 112): 20080516Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2008 10:57:49:513Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547Select CONVERT(varchar(100), GETDATE(), 120): 2008-05-16 10:57:49Select CONVERT(varchar(100), GETDATE(), 121): 2008-05-16 10:57:49.700Select CONVERT(varchar(100), GETDATE(), 126): 2008-05-16T10:57:49.827Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM。