日期和时间数据类型
数据类型

存储(字节)

日期范围 精确度 格式示例
DateTime 8 1753年1月1日 - 9999年12月31日 3 1/3毫秒 yyyy-MM-dd hh:mm:ss.nnn
smalldatetime 4 1900年1月1日 - 2079年6月6日 1分钟 yyyy-MM-dd hh:mm
date 3 0001年1月1日 - 9999月12月31日 1天 yyyy-MM-dd
time 3-5 N/A 100纳秒 hh:mm:ss.nnnnnnn
DateTime2 6-8 0001年1月1日 - 9999年12月31日 100纳秒 yyyy-MM-dd hh:mm:ss.nnnnnnn
Datetimeoffset 8-10 0001年1月1日 -- 9999年12月31日 100纳秒 yyyy-MM-dd hh:mm:ss.nnnnnnn

-- 1、时间和日期函数 除了CURRENT_TIMESTAMP 函数不置顶小括号"()";其他的函数都需要制定小括号

select GETDATE() --返回当前时间
select CURRENT_TIMESTAMP -- 等同于getdate(),但是遵循ANSI SQL
select GETUTCDATE() -- 返回UTC日期和时间(协调世界时 )
select SYSDATETIME() -- 当前日期和时间
select SYSUTCDATETIME() -- 当前UTC日期和时间(协调世界时)
select SYSDATETIMEOFFSET() -- 包含时区偏移量的当前日期时间

-- 2、cast、convert函数,及其Try_对应函数 TRY_函数在SQL Sever2012开始支持
-- cast、convert函数用于将输入值转换为目标类型,如果转换成功输出转换的值,否则报错;
-- try_cast、try_convert函数;两个个try_函数与其对应的函数功能作用一样,不同的是如果不能讲输入的值转换为指定类型,函数返回NULL.

select CAST('20160628' AS DATE)
select TRY_CAST('20160628' AS DATE)

select CAST('123456' as DATE)
select Try_CAST('123456' as DATE)

select CONVERT(char(10),GETDATE(),120)
select Try_CONVERT(char(10),GETDATE(),120)

select CONVERT(int,'123acb')
select Try_CONVERT(int,'123acb')

-- 3、switchoffset函数将输入的datetimeoffset时间调整为指定的时区时间
select switchoffset(sysdatetimeoffset(),'-05:00') --查询-05:00 时区时间
select SWITCHOFFSET(SYSDATETIMEOFFSET(),'+00:00') --查询UTC时间

-- 4、Todatetimeoffset函数;设置输入的日期和时间值得时区偏移量
select TODATETIMEOFFSET(SYSDATETIMEOFFSET(),-10)

-- 5、DateAdd函数;允许为指定的日期部分增加一个指定的单位的单位数量到输入的日期和时间值中。
select DATEADD(YEAR,1,'2016-06-28') --指定日期加1年 2017-06-28
select DATEADD(QUARTER,1,'2016-06-28') --指定日期加3个月206-09-28
select DATEADD(MONTH,-1,'2016-06-28') --指定日期减1个月2016-05-28
select DATEADD(DAY,1,'2016-06-28') --指定日期加1天2016-06-29
select DATEADD(WEEK,1,'2016-06-28') --指定日期加7天2016-07-05
select DATEADD(HOUR,1,'2016-06-28 21:00:00.000') -- 指定时间加1小时 2016-06-28 22:00:00.000
select DATEADD(MINUTE,1,'2016-06-28 21:00:00.000') -- 指定时间加1分钟 2016-06-28 21:01:00.000
select DATEADD(SECOND,1,'2016-06-28 21:00:00.000') -- 指定时间加1秒钟 2016-06-28 21:00:01.000
select DATEADD(MILLISECOND,10,'2016-06-28 21:00:00.000') --指定时间加10毫秒 2016-06-28 21:00:00.010

-- 6、DateDiff(part,val1,val2)函数;返回val2-val1返回指定单位的数量
select DateDiff(YEAR,'2011-06-28','2017-06-28')
select DateDiff(QUARTER,'2016-03-28','2016-06-28')
select DateDiff(MONTH,'2016-05-28','2016-06-28')
select DateDiff(DAY,'2016-06-27','2016-06-28')
select DateDiff(WEEK,'2016-06-21','2016-06-28')
select DateDiff(HOUR,'2016-06-28 20:00:00.000','2016-06-28 21:00:00.000')
select DateDiff(MINUTE,'2016-06-28 21:01:00.000','2016-06-28 21:00:00.000')
select DateDiff(SECOND,'2016-06-28 21:00:01.000','2016-06-28 21:00:00.000')
select DateDiff(MILLISECOND,'2016-06-28 21:00:00.001','2016-06-28 21:00:00.000')

-- 7、datepart函数;返回一个日期或时间部分的整数部分;
select DATEPART(YEAR,'2016-06-28')
select DATEPART(MONTH,'2016-06-28')
select DATEPART(WEEK,'2016-06-28')
select DATEPART(DAY,'2016-06-28')
select DATEPART(HOUR,'2016-06-28 21:01:02')
select DATEPART(MINUTE,'2016-06-28 21:01:02')
select DATEPART(SECOND,'2016-06-28 21:01:02')
select DATEPART(MILLISECOND,'2016-06-28 21:01:02:100')

-- 8、year、month和day函数;和datepart函数一样;返回年、月、日期的整数
select YEAR('2016-06-28')
select month('2016-06-28')
select day('2016-06-28')

-- 9、datename函数;与datepart类似;但是返回的不是数字而是名称,根据操作系统的语言返回指定的日期名称;例如英文操作系统中 DATENAME(MONTH,'2016-06-28') 返回june
select DATENAME(year,'2016-06-28')
select DATENAME(MONTH,'2016-06-28')
select DATENAME(DAY,'2016-06-28')
select DATENAME(HOUR,'2016-06-28 21:01:02')
select DATENAME(MINUTE,'2016-06-28 21:01:02')
select DATENAME(SECOND,'2016-06-28 21:01:02')
select DATENAME(MILLISECOND,'2016-06-28 21:01:02:100')

-- 10、isdate函数;判断输入的字符串是否能转换为日期或时间;true 为1;false为0
select ISDATE('2016-06-28') --true
select ISDATE('2016-06-282') --false

select ISDATE('2016-06-28 21:00:00.000') --true
select ISDATE('2016-06-28 21:00:00.0000') --false

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

  1. MS SQL Server时间常用函数

    SQLServer时间日期函数详解,SQLServer,时间日期, 1.      当前系统日期.时间 select getdate() 2. dateadd      在向指定日期加上一段时间的基础 ...

  2. SQL SERVER时间函数

    本篇文章还是学习<程序员的SQL金典>内容的记录,此次将讲解的是SQL SERVER的时间函数. 本文只讲SQL SERVER支持的时间函数(其它数据库这里就不罗列了,想看更多的可以关注& ...

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

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

  4. 查看ms SQL Server存储过程,函数的内容

    方法1:最简单的,右键单击要查看的存储过程,选择“修改”: 方法2: SELECT definition FROM solar.sys.sql_modules WHERE [object_id]=(O ...

  5. iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)【转】

    iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post). Oracle设置 <!-- Oracle SE ...

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

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

  7. MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建

    前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...

  8. (转载)MS SQL Server 未公开的加密函数有哪些?

    MS SQL Server 未公开的加密函数有哪些? 以下的文章是对MS SQL Server 未公开的加密函数的具体操作,如果你对其相关的实际操作有兴趣的话,你就可以点击了. MS SQL Serv ...

  9. MS SQL Server的LTRIM,RTRIM和TRIM函数

    在MS SQL Server 2017有了一个新函数TRIM,整合以前版本LTRIM和RTRIM. 这几个函数都是去除字符串头部后尾部的空格. DECLARE @str NVARCHAR(MAX) = ...

随机推荐

  1. IPv6绝不仅仅是对IPv4地址长度的增加

    众所周知,IPv6 IP地址长度是IPv4 IP地址长度的四倍,是解决IPv4公共网址资源枯竭的最佳技术.的确,IETF在制定IPv6标准时也是基于这一因素考虑的.当时正是90年代初,Web开始出现, ...

  2. Kubernetes — Job与CronJob

    有一类作业显然不满足这样的条件,这就是“离线业务”,或者叫作 Batch Job(计算业务). 这 种业务在计算完成后就直接退出了,而此时如果你依然用 Deployment 来管理这种业务的话,就会 ...

  3. CSS3基础入门01

    CSS3 基础入门 01 前言 相对于css2来说,css3更新了很多的内容,其中包括选择器.颜色.阴影.背景.文本.边框.新的布局方案.2d.3d.动画等等. 而如果想要学习css3的诸多部分,不妨 ...

  4. <数据结构基础学习>(四)链表 Part 1

    一.链表基础 动态数组.栈.队列底层都是依托静态数组实现的,靠resize来解决固定容量问题. 链表是真正的动态数据结构,是一种最简单的一种动态数据结构. 更深入的理解引用(或者指针). 更深入的理解 ...

  5. RBAC权限管理系统

    RBAC--基于角色的权限管理系统 优势: 1. 简化了用户和权限的关系 2. 易扩展,易于维护 3. RBAC不用给用户单个分配权限,只用指向对应的角色就会有对应的权限,而且分配权限和收回权限都很方 ...

  6. mysql 设置允许重试,批量更新

    jdbc:mysql://ip:port/base?allowMultiQueries=true&autoReconnect=true 在mybatis中批量更新 需要在mysql的url上设 ...

  7. 洛谷P5289 皮配

    解:观察一波部分分. 首先小数据直接暴力4n,然后考虑背包.设f[i][a][b][c]表示前i个学校中前三位导师分别有多少人,第四位导师可以直接推出来. 然后暴力枚举每一个人放在哪进行背包. 进一步 ...

  8. C#动态操作DataTable(新增行、列、查询行、列等)

    public void CreateTable() { //创建表 DataTable dt = new DataTable(); //1.添加列 dt.Columns.Add("Name& ...

  9. HDU - 1078 FatMouse and Cheese (记忆化搜索)

    FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimension ...

  10. JS学习笔记Day11

    一.什么是事件对象(黑匣子) (一)事件: onclick ondblclick (二)当绑定对象的事件被触发时,所发生的所有详细信息都会保存在一个地方,这个地方称为事件对象 二.如何获取事件对象 ( ...