1、日期和时间数据类型

(1)在sqlserver 2008之前,SQL Server 支持datetime 和 smalldatetime 两种日期时间数据类型、这两种数据类型日期和时间是不可分割的、差异在日期范围、精度方面

(2)sql server 2008引入date 和 time 、datetime2、datetimeoffset数据类型、其中datetime2比date范围更大,精度更高、datetimeoffset 有一个时间偏移量组件

(3)datetime 精确到毫秒,time 和 datetime 精确到100纳秒

(4)time 、datetime2 、datetimeoffset 的存储需求取决于精度、以整数 0~7 表示秒的小数部分的精度、如TIME(0),表示小数部分为0位,精确到秒,TIME(3)表示精确到毫秒

2、日期和时间常量

(1)日期和时间常量,说白了就是日期时间类型的文本值,如orderdate = '20070212'

(2) Sql server将 文本‘20070212’ 识别为字符串常量、而不是日期和时间常量,但是由于 orderdate = '20070212' 涉及两种类型的操作数、所以必须有一个隐式转换,类型转换的方向基于数据类型的优先级、日期类型优先级高于字符串

(3)此外也可以进行显式转换

cast('' as datetime)

(4)日期格式与语言有关系,如中英文日期格式不同,sql server 将日期字符串转换成日期时,基于会话的有效语言转换

(5)convert(datetime, '02/12/2007' ,101)显式转换字符串常量,第3个参数中指定一个代表所使用格式的数字、网上有编码与格式的映射表格(The Cast and  Convert Functions)

3、日期筛选的优化细节

(1)使用日期函数 year 、month 是无法使用索引的

-- 以下sql 无法使用到索引
select orderid ,custid ,empid ,orderdate
from Sales.Orders
where year(orderdate) = 2007;

(2)应该使用以下方案替代

select orderid ,custid ,empid, orderdate
from Sales.Orders
where orderdate>= ''
and orderdate < ''

4、日期与事件函数

4.1 返回当前日期和时间

(1)getdate()   , 返回datetime类型、当前日期时间

(2)current_timestamp , 等价于getdate() ,返回值是datetime ,不用带括号,是标准ANSI SQL,推荐使用

(3) sysdatetime 返回的是datetime2

4.2指定格式字符串转换成日期

4.2.1 cast 、convert 、parse 、try_

(1)cast(value as datatype) 、convert(datetyepe,vulue,stylenumber)、parse( value as datatype using culture)

(2)cast convert parse 函数当源数据无法转换成日期会报错,如果加了try_前缀 函数返回null ,不会报错

(3)cast 是ANSI SQL,convert 和parse 不是,所以除非需要使用到样式编码或趋于编码,尽量使用Cast

(4) convert 和其他两个参数不一样、第一个参数是dateype ,第二步才是value,

(5)convert 既可以将字符串转时间,也可以将时间转成指定字符串

-- 字符串转时间
select convert(datetime, '02/12/2007' ,101) -- 时间转字符串,一下返回当前年月日'20190406'
select convert(char(8),current_timestamp,112)

4.2.2 dateadd 函数

(1)该函数用于为指定日期部分增加一个指定的单位数量到输入的日期时间值总

(2)语法 dateadd(part, n, dt_val)

(3)   part 的有效输入值有 year、 quarter 、month 、week 、day 、hour 、minute、 second 、second  等,更多的参阅SQL Server 联机丛书

-- 加一年
select dateadd(year,1,'')

4.2.3 datediff函数

(1) datediff 函数返回两个日期和时间值之间在指定日期部分的差异

-- 计算一下两个日期相差多少天,返回366天
select datediff(day,'','')

(2)part 和前面一样

(3)是后面的日期,减去前面的日期

4.2.4 datepart函数

(1) datepart 返回一个表示所请求日期或时间值部分的整数

--  返回2
datepart(month,'')

(2) year(dt_val) 、month(dt_val) 、day(dt_val) 实际是datepart 的缩写

4.2.5 isdate函数

isdate(str)  ,字符串能转换成时间返回1 ,不能返回0

4.2.6 fromparts 函数

(1)在sqlserver 2012 引入,用于接收各个部分的整数值构建对应类型

(2)格式

datefromparts(year,month,day)

datetimefromparts(year,month, day, minute, seconds,millisseconds)

4.2.7 eomonth

(1)sqlserver 2012 中引入、用户接受一个日期和时间值输入,返回月末午夜日期

-- 返回当月月末日期
select eomonth(current_timestamp)

(2) 第二个参数可选,指示在原来的基础上增加多少个月

--下个月的最后一天

select eomonth(current_timestamp,1)

sql server 日期时间数据类型的更多相关文章

  1. sql server日期时间转字符串

    一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基 ...

  2. SQL Server日期时间格式转换字符串详解 (详询请加qq:2085920154)

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

  3. SQL Server日期时间格式转换字符串

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

  4. sql server日期时间转字符串(转)

    一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基 ...

  5. SQL Server日期时间格式转换字符串详解

    本文我们主要介绍了SQL Server日期时间格式转换字符串的相关知识,并给出了大量实例对其各个参数进行对比说明,希望能够对您有所帮助. 在SQL Server数据库中,SQL Server日期时间格 ...

  6. sql server 日期时间与字符串的转换

    一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基 ...

  7. (后端)SQL Server日期时间函数

    转自博客园: 1.获取当前日期GetDate getdate()函数以datetime数据类型的格式返回当前SQLServer服务器所在计算机的日期和时间.其语法格式为getdate().返回值舍入到 ...

  8. Sql Server 日期时间格式转换

    日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02 CONVERT(varchar(10), 时间一, 23) 结果:2 ...

  9. sql server日期时间函数

    From:http://www.cnblogs.com/linzheng/archive/2010/11/17/1880208.html 1.  当前系统日期.时间  select getdate() ...

随机推荐

  1. UVALive 3231 网络流

    题目要求给m个任务分配给n个机器,但最后任务量最多的那个机器的任务量尽量少,利用最大流,在最后的汇点那里设置关卡,二分结果,把机器到最终汇点的容量设置为该值,这样就达到题目条件,这样跑最大流 还能把m ...

  2. nosql概叙

    关系型数据库管理系统:按照预先设置的组织架构,将数据存储在物理介质上 数据之间可以做关联操作

  3. NO29 用户提权sudo配置文件详解实践--志行为审计

     用户提权sudo配置文件详解实践: 放到visudo里:  验证权限:

  4. 转《Python爬虫学习系列教程》学习笔记

    http://www.cnblogs.com/xin-xin/p/4297852.html

  5. 51nod 1009:数字1的数量

    1009 数字1的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个 ...

  6. AngularJS1.X版本基础

    AngularJS  知识点: DataBinding Providers Validators Directives  Controllers Modules Expressions Factori ...

  7. (转)CentOS/Debian/Ubuntu系统 TCP-BBR 一键安装脚本

    本脚本适用环境 系统支持:CentOS 6+,Debian 7+,Ubuntu 12+ 虚拟技术:OpenVZ 以外的(KVM.Xen.VMware等) 内存要求:≥128M 日期 :2017 年 0 ...

  8. 04.swoole学习笔记--webSocket服务器

    <?php //创建webSocket服务器 $serv=); //获取请求 //on //open 建立连接 $serv:服务器 $request:客户端信息 $serv->on('op ...

  9. CSS样式表——列表与布局

    列表方块:针对<ol></ol>和<ul></ul> 属性style="list-style:none"               ...

  10. 机器学习-liuyubobobo(慕课网)

    第一章 python3玩转机器学习 第二章 机器学习基础 安装:1.anaconda   2.pycharm 第三章 Jupyter Notebook,numpy,Matplotlib 1.jupyt ...