SQL Server 日期相关资料详细分析
发布时间:2021-12-03 16:54:15 所属栏目:PHP教程 来源:互联网
导读:一、日期类型: 对于SQL Server 2008 来说(因为2000甚至2005已经稍微有被淘汰的迹象,所以在此不作过多说明,加上自己工作使用的是2008R2。所以不保证08以前的能用),日期类型有: 数据类型 格式 范围 精确度 存储大小(以字节为单位) 用户定义的秒的小数
一、日期类型: 对于SQL Server 2008 来说(因为2000甚至2005已经稍微有被淘汰的迹象,所以在此不作过多说明,加上自己工作使用的是2008R2。所以不保证08以前的能用),日期类型有: 数据类型 格式 范围 精确度 存储大小(以字节为单位) 用户定义的秒的小数精度 时区偏移量 time hh:mm:ss[. nnnnnnn] 00:00:00.0000000 到 23:59:59.9999999 100 纳秒 3 到 5 是 否 date YYYY-MM-DD 0001-01-01 到 9999-12-31 1 天 3 无 无 smalldatetime YYYY-MM-DD hh:mm:ss 1900-01-01 到 2079-06-06 1 分钟 4 无 无 datetime YYYY-MM-DD hh:mm:ss[. nnn] 1753-01-01 到 9999-12-31 0.00333 秒 8 无 否 datetime2 YYYY-MM-DD hh:mm:ss[. nnnnnnn] 0001-01-01 00:00:00.0000000 到 9999-12-31 23:59:59.9999999 100 纳秒 6 到 8 有 无 datetimeoffset YYYY-MM-DD hh:mm:ss[. nnnnnnn] [+|-]hh:mm 0001-01-01 00:00:00.0000000 到 9999-12-31 23:59:59.9999999(以 UTC 时间表示) 100 纳秒 8 到 10 有 有 注意:所有系统日期和时间值均得自运行 SQL Server 实例的计算机的操作系统。 每一种日期类型有其使用范围,当然以刚好适用为最佳选择,切记不要为了方便,什么都用datetime类型。从性能方面会有很大影响,举个例子: 一个表,有1亿行的数据,有10列日期型(对于一些历史表来说这是完全有可能的)。如果全部使用datetime,那么光这部分的存储空间就是:10*100000000*8字节/(1024*1024)≈7629M≈7.4G,当然,如果有这样的需要,再大也还是要用的,假设其实业务上不需要那么精确(因为datetime是精确到0.00333秒),只需要精确到1分钟即可,那么毫不犹豫使用smalldatetime,可以减少一半的空间,也就是大约3.7G。减少空间的好处有很多,比如备份及数据库文件的大小可以减少,让有限的预算做更多的事情。而且数据页固定8KB,越少的体积单页能存放的数据也就越多,查询时要访问的页面就更少,缓解I/O压力。同时对索引的使用也更有效,等等。 所以这里就能体现出“设计”的重要性。 二、日期函数:日期函数是处理日期的基础,牢记日期函数能减少很多编程工作 精度较高的系统日期和时间函数 精确程度取决于运行 SQL Server 实例的计算机硬件和 Windows 版本。标注有:2012有效的是只有2012才出现的功能 函数 语法 返回值 返回数据类型 确定性 SYSDATETIME SYSDATETIME () 返回包含计算机的日期和时间的 datetime2(7) 值,SQL Server 的实例正在该计算机上运行。 时区偏移量未包含在内。 datetime2(7) 不具有确定性 SYSDATETIMEOFFSET SYSDATETIMEOFFSET ( ) 返回包含计算机的日期和时间的 datetimeoffset(7) 值,SQL Server 的实例正在该计算机上运行。 时区偏移量包含在内。 datetimeoffset(7) 不具有确定性 SYSUTCDATETIME SYSUTCDATETIME ( ) 返回包含计算机的日期和时间的 datetime2(7) 值,SQL Server 的实例正在该计算机上运行。 日期和时间作为 UTC 时间(通用协调时间)返回。 datetime2(7) 不具有确定性 精度较低的系统日期和时间函数 函数 语法 返回值 返回数据类型 确定性 ![]() (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |