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

存储(字节)

日期范围 精确度 格式示例
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. Web项目中出现乱码

    (不知道怎么写才好) 分两种情况: 1.如果是 get 方式 单独修改: new String(str.getBytes("原来的编码"), "想要的编码") ...

  2. hMailServer 邮件服务器搭建

    HMailServer是一个运行于微软Windows系统.基于GPL授权.免费的电子邮件系统:支持常见的电子邮件协议SMTP.POP3.IMAP:可以很容易地与许多现有的网络邮件系统集成和二次开发:具 ...

  3. dubbo 使用zookeeper 出现 Dubbo客户端调用报错NullPointerException

    现在将网上的方法总结一下 方法一:.https://blog.csdn.net/u011294519/article/details/81810631 dubbo-provider.xml:提供者先扫 ...

  4. 这才是你想要的 Python 可视化神器

    Plotly Express 是一个新的高级 Python 可视化库:它是 Plotly.py 的高级封装,它为复杂的图表提供了一个简单的语法. 受 Seaborn 和 ggplot2 的启发,它专门 ...

  5. 怼天怼地怼空气的Linus喜欢怎样的工作方式?

    Linus Torvalds的“暴脾气”是出了名的,看到令自己不爽的事情就会怼过去,比如: 他曾经说Intel提交的漏洞修复程序是彻底的垃圾! 当别人说Git没用C++开发的时候, 他反击说“C++是 ...

  6. mysql主从复制、redis基础、持久化和主从复制

    一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...

  7. 不用Ajax时的传参方法

    不用Ajax时的怎么传参 创建一个form表单 function test(){ var params = { "参数名": "参数值" }; postExce ...

  8. 【BZOJ5506】[GXOI/GZOI2019]旅行者(最短路)

    [BZOJ5506][GXOI/GZOI2019]旅行者(最短路) 题面 BZOJ 洛谷 题解 正着做一遍\(dij\)求出最短路径以及从谁转移过来的,反过来做一遍,如果两个点不由同一个点转移过来就更 ...

  9. 4.4清北学堂Day1 主要内容:数论,数学

    Day 1; 1.常见的高精 输入输出都用字符数组: 字符数组的实际长度用strlen()来求: 运算时倒序运算,把每一个字符都-‘0’ 进位的处理上也要注意: 小数减大数时先判断大小然后加负号 只能 ...

  10. SQL学习指南第三篇

    再谈连接 外连接 之前的范例都是没有考虑条件可能无法为表中的所有行匹配的问题 左外连接与右外连接 SELECT a.account_id, a.cust_id, b.name FROM account ...