本篇文章还是学习《程序员的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. JS中NULL和undifined区别及NULL的作用

    1.博客地址:http://www.cnblogs.com/eastday/archive/2010/03/03/1677324.html 2.参考地址2:https://www.zhihu.com/ ...

  2. Objective-C 【autorelease基本使用】

    ------------------------------------------- NSString中的内存管理问题 由于autoreleasepool的存在,对于内存管理就会很复杂,retain ...

  3. OpenStack 加入新的节点,创建虚拟机失败的问题

    最开始做OpenStack的时候,由于只是为了部署测试用,因此将所有的部分都装在一台单网卡的机器上,费了九牛二虎之力终于部署成功,其中最主要的两块问题出现在以下两个方面: 1:nova.neutron ...

  4. UI3_UIbarButtonItem

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

  5. Linux 伙伴算法简介

        本文将简要介绍一下Linux内核中的伙伴分配算法. Technorati 标签: 伙伴算法     算法作用      它要解决的问题是频繁地请求和释放不同大小的一组连续页框,必然导致在已分配 ...

  6. IOS做一个简单计算器

    //声明非原创 步骤: 1.打开Xcode,单机Creat a new Xcode project 2.左边选择ios下Application,右边选择single view Application ...

  7. jquery的change 事件

    jquery的change 事件 . <script src="jquery.min.js" type="text/javascript">< ...

  8. 自适应rem布局

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...

  9. php出现“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”错误的一种情况,及解决方法

    PHP中的“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”错误,可能是因为美元符号$的误用,看下面一种情况 class Test{         s ...

  10. lnmp下用phpize动态安装PHP模块/扩展(不需要重装PHP)

    安装前 安装前建议先执行 /usr/local/php/bin/php -m (此命令显示目前已经安装好的PHP模块)看一下,要安装的模块是否已安装.然后下载当前PHP版本的源码并解压. 本文以ima ...