SQL Server 2008中的时间数据类型
SQL Server 2008中的时间数据类型
SQL Server 2008中的时间数据类型在SQL Server 2005版本中保存日期的数据类型只有两种:datetime、smalldatetime,但是在SQL Server 2008版本中新增了一些日期数据类型:time、date、smalldatetime、datetime、datetime2、datetimeoffset。下面具体讲解SQL Server 2008的几种时间日期数据类型:
一、DATE数据类型
在SQL Server 2005中,没有专门只用来存储日期(不包括时间)的特定数据类型,只能使用DATETIME或SMALLDATETIME数据类型来完成此操作。但是,当你输入日期之后,会显示还有一个时间的组分需要输入,其初始显示为12:00 AM。如果只想在输出结果中显示日期那一部分,就必须修改输出格式。大部分情况下,可以使用getdate()函数来存储当前日期。要在SQL Server 2005中的SMALLDATETIME或DATETIME列中保存getdate()的函数值,同时也会保存了当前的时间,而这可能会引发很多问题。例如:
--如果你使用以下的语句,想根据给定的日期来搜索记录:
SELECT * FROM tblDate Where [Date] = '2007-12-01'
--由于Date列里含有时间组分,这个命令将无法正常执行, 因此,你必须执行以下的查询操作:
SELECT * FROM tblDate Where datediff(d,[Date],‘2007-12-01’) =0
--不过Date列中符合要求的索引很可能不会被使用。来看看以下的语法:
DECLARE @dt as DATE
SET @dt = getdate()
PRINT @dt
--以上脚本的输出结果只有日期,不包括时间部分。DATE数据类型的取值范围从0001-01-01到9999-12-31。
二、TIME数据类型
就像日期数据类型一样,如果你只想存储时间数据而不需要日期部分就可以利用TIME数据类型。下面就是利用TIME数据类型进行查询的例子:
--下面脚本输出结果只包含时间部分,其取值范围从00:00:00.0000000到23:59:59.9999999。
DECLARE @dt as TIME
SET @dt = getdate()
PRINT @dt
三、DATETIME2数据类型
新的DATETIME2数据类型也是一种数据时间混合的数据类型,不过其时间部分秒数的小数部分可以保留不同位数的值,比原来的DATETIME数据类型取值范围要广。用户可以根据自己的需要通过设置不同的参数来,设定小数位数,最高可以设到小数点后七位(参数为7),也可以不要小数部分(参数为0),以此类推。以下是利用DATETIME2的查询语句:
DECLARE @dt7 datetime2(7)
SET @dt7 = Getdate()
PRINT @dt7
--result is 2008-01-3 12:15:11.2340000
该语句的输出结果中时间的秒数部分精确到小数点后第七位。具体参考如下:
Fraction |
Output |
0 |
2007-10-28 22:11:20 |
1 |
2007-10-28 22:11:19.7 |
2 |
2007-10-28 22:11:19.70 |
3 |
2007-10-28 22:11:19.703 |
4 |
2007-10-28 22:11:19.7030 |
5 |
2007-10-28 22:11:19.70300 |
6 |
2007-10-28 22:11:19.703000 |
7 |
2007-10-28 22:11:19.7030000 |
四、DATETIMEOFFSET数据类型
如果把日期和时间数据保存在一列里,是不会提示该日期和时间属于哪一个时区的。时区的提示非常重要,特别是当你处理数据包含了多个不同时区的国家时。新的DATETIMEOFFSET数据类型可以定义一个日期和时间组合,其中时间以24小时制显此数据类型让你存储的日期和时间(24小时制)是时区一致的。时间部分能够支持如DATETIME2和TIME数据类型那样的高达100纳秒的精度。DATETIMEOFFSET需要8到10字节的磁盘空间开销,这完全取决于你定义的时间部分的精度,如下表所示:
时区一致是指时区标识符是存储在DATETIMEOFFSET列上,时区标识是代表了一个[-|+]hh:mm指定,一个有效的时区范围是从-14:00到+14:00,这个值是增加或者减去UTC以获取本地时间。
下面的语句说明了DATETIMEOFFSET数据类型的用法:
DECLARE @dt DATETIMEOFFSET(0)
SET @dt = '2007-12-04 21:20:30 -1:00'
DECLARE @dt1 DATETIMEOFFSET(0)
SET @dt1 = '2007-12-04 21:20:30 +5:00'
SELECT DATEDIFF(hh,@dt,@Dt1)
- thinkphp5数据库配置(Thinkphp5框架实现获取数据库数据到视图的方法)
- 阿里云数据库高可用方案(阿里云服务器ECS安装MariaDB后无法远程连接数据库的解决方法)
- mysql 安装阿里云(详解如何在阿里云服务器安装Mysql数据库)
- idea的mysql如何连接(在IntelliJ IDEA中使用Java连接MySQL数据库的方法详解)
- python pandas读取数据库表(Python3.5 Pandas模块之DataFrame用法实例分析)
- mysql基础操作报告(gorm操作MySql数据库的方法)
- thinkphp5.1手动连接mysql数据库(thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例)
- sqlserver数据库文件包括(详解SQL Server数据库状态和文件状态)
- SQL SERVER获取指定数据库中所有存储过程的参数
- dede数据库详解(Dede 删除文档同时文章中的图片的方法)
- python学生管理系统与数据库(python学生管理系统学习笔记)
- sql查看数据库所有表名(SQL提取数据库表名及字段名等信息代码示例)
- laravel查询数据库视图(Laravel5.7 数据库操作迁移的实现方法)
- sqlserver常用基本数据类型有哪些(浅述SQL Server的语句类别 数据库范式 系统数据库组成)
- sqlserver访问远程数据库(SQL Server实现跨库跨服务器访问的方法)
- mysql更新数据库表中的数据语法(Mysql联表update数据的示例详解)
- 逐渐消失的东北八大怪现象,进步的社会里我们遗失的是什么(逐渐消失的东北八大怪现象)
- 今日大雪,大雪养生这样做,一年都有好气色(大雪养生这样做)
- 粗盐是什么 粗盐的功效与作用(粗盐的功效与作用)
- 会 吃人 的客机 从天堂到地狱只需5分钟,图-104如何做到(会吃人的客机)
- 男人犯的错,为什么要女人来承担(为什么要女人来承担)
- 心理学 四个金蟾,哪个最招财 测你今生的运势有多棒(心理学四个金蟾)
热门推荐
- vueaxios使用教程交流(Vue使用axios图片上传遇到的问题)
- dedecms栏目静态化(dedecms TAG标签按栏目显示的方法)
- sqlserver常用基本数据类型有哪些(浅述SQL Server的语句类别 数据库范式 系统数据库组成)
- dedecms伪静态要怎么设置(DedeCMS系统自定义字段图片调用问题的解决方法)
- tomcat部署web项目常见问题(关于tomcat部署应用无法访问前端页面的问题)
- vueelementui组件生成页面(Vue Element前端应用开发之树列表组件)
- mysql开启审计日志会导致性能下降(MySQL 一则慢日志监控误报的问题分析与解决)
- 云主机免费体验(免费云主机试用一年靠谱吗)
- laravel设置读写权限(解决laravel上传图片之后,目录有图片,但是访问不到404的问题)
- python绘折线图数据(python2.7使用plotly绘制本地散点图和折线图)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9