本篇文章还是学习《程序员的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. Linux下用freetds连接mssql中文乱码的问题【参考2】

    php5.3的情况下,用pdo的dblib驱动无法连接mssql的,根据官方的描述,5.2已经修改这个bug,5.3没有. 用php自带的mssql函数可以的.编译freetds,php_mssql, ...

  2. ios开发:Core Data概述

    Core Data 概述 2005年的四月份,Apple 发布了 OS X 10.4,在这个版本中 Core Data 框架发布了.Core Data本身既不是数据库也不是数据库访问框架.相反,Cor ...

  3. CustomTabBarViewController

    // AppDelegate.m // CustomTabBar // // Created by qianfeng on 15/7/9. // Copyright (c) 2015年 qianfen ...

  4. 10款基于HTML5+CSS3实现的超酷源码动画

    1.基于Bootstrap的jQuery登录表单 这是一款基于Bootstrap的登录表单,表单的外观自然不用说,沿用了Bootstrap的风格,非常漂亮.这款登录表单有一个经过CSS3处理过的头像图 ...

  5. eclipse中tomcat配置(待完善)

    tomcat版本:apache-tomcat-6.0.29 项目结构:     一.新建server方式 二.eclipse tomcat plugin方式   tomcat plugin方式必须保证 ...

  6. 杭电ACM2096--小明A+B

    http://acm.hdu.edu.cn/showproblem.php?pid=2096 本来就是很简单.但是数据的大小有要求. (a%100+b%100)%100和(a+b)%100本来没有什么 ...

  7. C# 中有关 using 关键字

    关于 C# 中的 using 关键字 我们往往只在代码的开头使用 using 关键字来引入名称空间,这是 using 的一个最常见的使用. 但是,using 关键字是否只有这么一处用武之地吗? 下面, ...

  8. Excel 窗体控件属性

    常规 AutoLoad   (Excel) 打开工作簿时是否加载控件.(如果是 ActiveX   控件,则忽略.) Enabled(表单) 控件是否可以接收焦点并响应用户生成的事件. Locked( ...

  9. 为什么ARM的frq中断的处理速度比较快

    FRQ向量位于异常向量表的最末端,不需要跳转就可以直接执行后面跟随的异常处理程序:FRQ模式中私有寄存器数量最多,在进行异常处理时不需要对这些寄存器进行压栈保存.

  10. Firefox 与 IE 对Javascript和CSS的区别

    1. document.formName.item("itemName") 问题 说明:IE下,可以使用document.formName.item("itemName& ...