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. php: 文件上传

    1.主页: <!DOCTYPE html><html lang="en"><head>    <meta charset="UT ...

  2. Myeclipse项目出现红叉解决方案

    1.右键点击你的项目.选中properties 2.选中MyEclipse下的Project Facets里面的java 此时的版本号为1.5,修改 3.选中MyEclipse下的Project Fa ...

  3. ls查看所有文件

    ls -al   查看所有文件,包括隐藏文件

  4. Deepctr框架代码阅读

    DeepCtr是一个简易的CTR模型框架,集成了深度学习流行的所有模型,适合学推荐系统模型的人参考. 我在参加比赛中用到了这个框架,但是效果一般,为了搞清楚原因从算法和框架两方面入手.在读代码的过程中 ...

  5. Django创建完全独立的APP

    我们之前已经完成了项目的结构搭建,但是,在Django当中,我们强调的一个重要概念是app,比如Django自带的admin就是一个成功的app典范,那么我们应该如果整理自己的项目结构,才能让我们的a ...

  6. 运行自己的 DaemonSet【转】

    本节以 Prometheus Node Exporter 为例演示如何运行自己的 DaemonSet. Prometheus 是流行的系统监控方案,Node Exporter 是 Prometheus ...

  7. UVA10820 交表 Send a Table

    \(\Large\textbf{Description:} \large{输入n,求有多少个二元组(x,y)满足:1\leqslant x,y\leqslant n,且x和y互素.}\) \(\Lar ...

  8. Fiddler里面AutoResponder和mock用法

    AutoResponder 1.找到对应图片请求的链接 2.操作步骤如下图: mock 使用场景:上一步骤模块没有完成,但是下一步模块完成了,需要使用到快速模拟,主要使用的地方就是测试接口

  9. awk&sed

    sed BRE       awk  ERE sed 不能采用?   awk可以 sed 在匹配的任何时候可以用^,$ awk必须除了在行头和行尾 其他地方必须转义

  10. Word 写论文的一些教训和经验

    参考文献 写正文时就在引用位置添加参考文献的title,写完后,在百度学术或谷歌学术中搜索参考文献获取GB/T 7714的参考格式,在参考文献的章节为文献编号,在引用位置插入交叉引用. 插图 可以先在 ...