本篇文章还是学习《程序员的SQL金典》内容的记录,此次将讲解的是SQL SERVER的时间函数。

本文只讲SQL SERVER支持的时间函数(其它数据库这里就不罗列了,想看更多的可以关注《程序员的SQL金典》)。

对于时间来讲,我想基础的东西大家还是需要懂的,比如说,对于时间来说,有分:

(1)日期:表示“年-月-日”信息的数据类型,其精度精确到“日”,其中包含了年、月、日三个信息,比如“2008-08-08”。而无时间点的概念。在数据库中,一般用Date来表示日期类型。

(2)时间:表示“小时:分:秒” 信息的数据类型,其精度精确到“秒”,其中包含了小时、分、秒三个信息,比如“19:00:00”。而无日期的概念。在数据库中,一般用Time来表示时间类型。

(3)日期时间:表示“年-月-日 小时:分:秒” 信息的数据类型,其精度精确到“秒”,其中包含了年、月、日、小时、分、秒六个信息,比如“2008-08-08 08:00:00”。既包含了日期,也包含了时间点。在数据库中,一般用DateTime来表示日期时间类型。

(4)时间戳:表示比日期时间精度更高精度的时间类型。比如我们想区分表中两条记录插入表中的先后顺序,由于数据库操作速度非常快,如果用DateTime 类型记录输入插入时间的话,若两条记录插入的时间间隔非常短的话是无法区分它们的,这时就可以使用时间戳类型。数据库中,一般用TimeStamp来表示时间戳类型。

不同的数据库系统对日期、时间、日期时间与时间戳等数据类型的支持差异性非常大,有的数据类型在有的数据库系统中不被支持,而有的数据类型在不同的数据库系统中表示精度和其类型名称所暗示的精度不同,比如Oracle 中的Date 类型中包含时间信息。数据库中的日期时间函数对这些类型的支持差别是非常小的,因此在一般情况下我们将这些类型统一称为“日期时间类型”。

GETDATE()函数

获取得当前日期时间,返回的信息是包括了日期、时间(精确到秒以后部分)的时间戳信息。

SELECT GETDATE() as 当前日期时间

MSSQL Server 没有专门提供取得当前日期、取得当前时间的函数。但是通过间接的方式也可以获取到。主要是使用到Convert()函数。

获取当前日期的方式:

SELECT CONVERT(VARCHAR(50) ,GETDATE( ), 101) as 当前日期

获取当前日期的方式:

SELECT CONVERT(VARCHAR(50) ,GETDATE(), 108) as 当前时间
DATEADD (datepart , number, date )函数

用于进行日期时间的加法运算,其中datepart参数是表示日期部分的参数(比如是以日期还是以月份相加等),number参数是具体的加数,正数代表向未来日期方向加,负数代表向过去日期方向减,date参数为待计算的日期时间类型数据。

SELECT DATEADD(MONTH, 1, GETDATE())
SELECT FBirthDay, DATEADD (YEAR ,3,FBirthDay) as threeyrs,
DATEADD(QUARTER ,20,FBirthDay) as ttqutrs,
DATEADD(MONTH ,68,FBirthDay) as sxtmonths,
DATEADD(WEEK, -1000,FBirthDay) as thweeik
FROM T_Person

datepart参数可以取的单位类型如下:

单位 别名 说明
year yy,yyyy 年份
quarter qq,q 季度
month mm,m 月份
dayofyear dy,y 当年度的第几天
day dd,d
week wk,ww 当年度的第几周
weekday dw,w 星期几
hour hh 小时
minute mi,n
second ss,s
millisecond ms 毫秒
DATEDIFF ( datepart , startdate , enddate )函数

 

用于计算两个日期时间之间的差额。其中datepart参数表示日期部分的参数(比如只比较年还是只比较月等),startdate参数为起始日期时间类型数据;enddate参数为结束日期时间类型数据。

SELECT DATEDIFF(DAY, '2013/12/17 21:00:00', '2013/12/19 10:00:00')
SELECT FRegDay,FBirthDay,DATEDIFF(WEEK, FBirthDay, FRegDay) FROM T_Person

datepart参数可以取的单位类型如下:

单位 别名 说明
year yy, yyyy
quarter qq, q 季度
month mm, m
dayofyear  dy, y 工作日
day dd, d 天数
week wk, ww
Hour hh 小时
minute mi, n 分钟
second ss, s
millisecond ms 毫秒
DATENAME(datepart,date)函数

用来获取一个日期的特定部分,比方只获取年份或者是只获取月份等。其中datepart参数是表示要返回的日期部分的参数(即如果是Year的话,则返回的是具体的年份),date参数为待计算日期。

SELECT FBirthDay,DATENAME(Weekday,FBirthDay),
FRegDay,DATENAME(DW, FRegDay)
FROM T_Person

datepart参数可以取的单位类型如下:

单位 别名 说明
Year yy、yyyy 年份
Quarter qq, q 季度
Month mm, m 月份
Dayofyear dy, y 每年的某一日
Day dd, d 日期
Week wk, ww 星期
Weekday dw 工作日
Hour hh 小时
Minute  mi, n  分钟
Second  ss, s  秒
Millisecond  ms  毫秒
DATEPART (datepart,date)函数

MSSQL SERVER提供另一个函数也同样可以实现获取日期时间特定部分。其中datepart参数是表示要返回的日期部分的参数(即如果是Year的话,则返回的是具体的年),date参数为待计算日期。

SELECT FBirthDay, DATEPART(Dayofyear,FBirthDay),
FRegDay, DATEPART(Year, FRegDay)
FROM T_Person

datepart参数可以取的单位类型如下:

单位 别名 说明
Year yy、yyyy 年份
Quarter qq, q 季度
Month mm, m 月份
Dayofyear dy, y 每年的某一日
Day dd, d 日期
Week wk, ww 星期
Weekday dw 工作日
Hour hh 小时
Minute  mi, n  分钟
Second  ss, s  秒
Millisecond  ms  毫秒

注:DATEPART()函数的返回值是数字,而DATENAME()函数则会将尽可能以名称的方式做为返回值。

SQL SERVER时间函数的更多相关文章

  1. SQL Server ->> 时间函数: EOMONTH, DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIMEOFFSETFROMPARTS

    上面几个函数都是SQL Server 2012新增的时间函数. EOMONTH 返回传入时间的月结束日,返回数据类型为DATE SELECT EOMONTH(GETDATE()) 结果为 DATEFR ...

  2. MS SQL Server 时间函数

    日期和时间数据类型 数据类型 存储(字节) 日期范围 精确度 格式示例 DateTime 8 1753年1月1日 - 9999年12月31日 3 1/3毫秒 yyyy-MM-dd hh:mm:ss.n ...

  3. 数据库开发基础-SQl Server 聚合函数、数学函数、字符串函数、时间日期函数

    SQL 拥有很多可用于计数和计算的内建函数. 函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表 函数的类型 在 SQL 中,基本的函数类型和种类有若干种.函 ...

  4. SQL Server时间粒度系列----第9节时间粒度示例演示

    本文目录列表: 1.准备测试数据 2.向测试数据表添加相关时间粒度字段列 3.基于日月季年统计汇总的演示 4.总结语 5.参考清单列表   准备测试数据   为了提供不同时间粒度示例的演示,就需要测试 ...

  5. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

  6. SQL Server时间粒度系列----第1节时间粒度概述

    本文目录列表: 1.什么是时间粒度?2.SQL Server提供的时间粒度3.SQL Server时间粒度代码演示   4.SQL Server基准日期 5.总结语6.参考清单列表   什么是时间粒度 ...

  7. SQL Server时间粒度系列----第2节日期、周时间粒度详解

    本文目录列表: 1.从MySQL提供的TO_DAYS和FROM_DAYS这对函数说起2.SQL Server日期时间粒度3.SQL Server周有关时间粒度 4.总结语 5.参考清单列表   从My ...

  8. SQL Server时间粒度系列----第3节旬、月时间粒度详解

    本文目录列表: 1.SQL Server旬时间粒度2.SQL Server月有关时间粒度 3.SQL Server函数重构 4.总结语 5.参考清单列表   SQL Server旬时间粒度       ...

  9. SQL Server时间粒度系列----第4节季、年时间粒度详解

    本文目录列表: 1.SQL Server季时间粒度2.SQL Server年时间粒度 3.总结语 4.参考清单列表   SQL Serve季时间粒度       季时间粒度也即是季度时间粒度.一年每3 ...

随机推荐

  1. win7安装office2007出错被中断-已经解决

    觉得雨林木风win7系统本身的office2007不好,但不能卸载,用360强力删除工具,把整个安装的文件夹全部删除,重新用之前能够在另外xp和win7系统成功安装的破解版office2007,安装开 ...

  2. iOS中调用系统录音功能及其播放

    最近做的项目中,用到了录音的功能,简单记录一下. 我的想法是:通过重写button的点击事件,来达到录音的目的. /*----------------------------------[录音]--- ...

  3. Revit二次开发-根据Element获取系统族信息

    Element element = doc.getElement(elementId); Autodesk.Revit.DB.Parameter familyType = element.get_Pa ...

  4. 20150323--MVC

    MVC: Model view(视图层,模板) Control(控制层) 三层:数据访问,商业逻辑,用户界面(Webform,MVC). 服务端无状态:接受请求,返回页面,每次请求并返回界面,前后不是 ...

  5. 20150309--gridview

    GridView: 使用代码套用模板,变为DataList的样式,添加<asp:TemplateField>标签,(注意必须加上<Columns>) <asp:GridV ...

  6. UI3_UIbarButtonItem

    // // AppDelegate.m // UI3_UIbarButtonItem // // Created by zhangxueming on 15/7/6. // Copyright (c) ...

  7. http: URL、请求方式

    URL:统一资源定位符,可以从互联网得到和访问资源,是标准资源的位置 结构包括协议.服务器名称(IP地址).端口(有的服务器需要).路径.文件名 协议:告诉浏览器如何处理打开的文件,常用的就是http ...

  8. 解析json数据总结

    json格式的数据一般就是两种类型的,一种是数组类型的,一种是对象类型的. 数组类型:[{"id":"a001","name":" ...

  9. Fedora 19 配置参考

    1. 安装完Fedora 19之后,第一件事不是升级系统,而是添加源. 下载我配置好的源,非常全面,适用Fedora 19 x86_64.点我下载 打开终端,切换到repo.zip所在目录:mv re ...

  10. 《linux源代码包的编译安装》RHEL6

    linux下源代码包的编译安装其实没那么复杂. 我是win7系统装的虚拟机,就简单说下: 举个简单的例子: http://www.openssl.org/ 这是openssl的官网,下载openssl ...