检索date/time值各部分 与YEAR、MONTH和DAY函数相似,DATEPART函数返回一个代表date/time值的指定部分的整数值。比如,下面的SELECT语句返回与上面的例子一样的结果: SELECT DATEPART(yy, PostTime) AS [Year], DATEPART(mm, PostTime) AS [Month], DATEPART(dd, PostTime) AS [Day] FROM DatabaseLog W……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
检索date/time值各部分
与YEAR、MONTH和DAY函数相似,DATEPART函数返回一个代表date/time值的指定部分的整数值。比如,下面的SELECT语句返回与上面的例子一样的结果:
SELECT DATEPART(yy, PostTime) AS [Year], DATEPART(mm, PostTime) AS [Month], DATEPART(dd, PostTime) AS [Day] FROM DatabaseLog WHERE DatabaseLogID = 1 |
首先要注意的是,当调用DATEPART时,需要指定两个参数。第一个参数确认检索的date/time值的组成部分,而第二个参数是一个源字段。对于第一个参数,你必须使用一个支持的缩写来指定时间部分。下面的表格列举了你可以检索的日期/时间部分以及你必须用来检索这些部分的缩写:
Date/time part | Abbreviations |
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
day of year | dy, y |
day | dd, d |
week | wk, ww |
weekday | dw |
hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
有些datetime部分有多个缩写支持。比如,你可以使用“YY”或“YYY”作为第一个DATEPART参数来检索date/time值中的年。注意,表格不仅仅包含年、月或日的缩写。换言之,你还可以检索季度、一年中特定的一天、一年中特定的一周以及工作日,如下面的SELECT语句所示:
|
正如前面的例子所显示的,每一个DATEPART实例都包含两个参数:date/time部分的缩写和源字段。语句返回如下的结果:
Quarter | DayOfYear | Week | Weekday |
4 | 287 | 42 | 6 |
注意,工作日显示为6。默认情况下,SQL Server的每周是从星期天开始的,因此,工作日6等同于星期五。
上面的两个例子仅仅检索与日期相关的值。但是,正如下面的表格所显示的,你也可以检索其它与时间相关的数据:
|
在这种情况下,该语句是检索小时、分、秒和毫秒,结果显示如下:
DATEPART函数的主要的局限是它返回的只是整数,这就是为什么星期五是以6显示的。然而,如果你想要显示实际的日和月名称,你可以使用DATENAME函数。DATENAME函数与DATEPART函数的运作完全一样。DATENAME使用同样数目的参数并支持同样的缩写。比如,如果你检索年、月和日,那么你只需简单地用DATENAME取代DATEPART就可以得到正如你在前面的例子中所看到的结果:
SELECT DATENAME(yy, PostTime) AS [Year], DATENAME(mm, PostTime) AS [Month], DATENAME(dd, PostTime) AS [Day] FROM DatabaseLog WHERE DatabaseLogID = 1 |
这样,你将得到下面的结果:
Year | Month | Day |
2005 | October | 14 |
月的值现在是October而不是10。但是,由于只有一种方式来代表它们,因此,年和日依然是整数。你也可以在其它的日期/时间组件上使用DATENAME函数,如下所示:
|
再次,我用DATENAME取代DATEPART,但是保留其它的不改变。语句返回了以下的结果。
Quarter | DayOfYear | Week | Weekday |
4 | 287 | 42 | Friday |
注意,季度、一年中第几天和第几周仍然是整数,但是工作日现在是Friday而不是6。你也可以使用DATENAME来检索一个date/time值的时间组件,但是结果将如你所想的那样,仍然是整数。
这就是DATEPART和DATENAME函数以及其它用来检索日期/时间值的函数。你可以单独或者混合着使用这些函数来关联值。我建议你尝试着使用这些函数以便更好地了解它们是如何工作的。在以后的技巧中(第四部分),我将阐述如何在这些值上执行运算以便添加数据和确定日期范围。同时,你也可以在Microsoft SQL Server Books Online上面获得各个函数的更多的信息和例子。
翻译
TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。