sql server date,datetime,datetime2 和 time 简单介绍

Sql Server使用 Date表示日期,time表示时间,使用datetime和datetime2表示日期和时间。

1,秒的精度是指使用多少位小数表示1s:

DateTime数据类型秒的精度是3,DateTime2和Time可以控制秒的精度,

语法是DateTime2(n)和time(n),n的取值范围是0-7,默认值是7。

2,DateTime数据类型 存储日期和时间,需要8个字节的固定存储空间,默认的数据格式是yyyy-MM-dd hh:mm:ss.xxx,表示从1753年1月1日到9999年12月31日的日期和时间数据,精确度为3.33毫秒或0.00333秒,即可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒。

Microsoft SQL Server 用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date (即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 1753 年 1 月 1 日的 datetime 值。第一个4 字节:1900 年1 月1 日当日为0 ;之前的日期是负数,之后日期是正数。另外一个 4 字节存储以10/3 毫秒数所代表的每天的时间。

declare @dt datetime

使用GetDate()和GetUTCDate()为DateTime类型的变量赋值,这两个函数返回值的类型是DateTime

declare @dt datetime
set @dt=getdate()

3,DateTime2数据类型 存储日期和时间,需要的存储空间不固定。根据存储的时间部分 fractional seconds precision来确定DateTime2的Storage Size,6 bytes for precisions less than 3; 7 bytes for precisions 3 and 4. All other precisions require 8 bytes.

DateTime2可以表示比DateTime更精确的时间,默认的数据格式是yyyy-MM-dd hh:mm:ss.nnnnnnn,DateTime2 秒默认的精度是7,即用7位小数表示一秒的精度。

DateTime2的语法是

datetime2 [ (fractional seconds precision) ]

下面两种声明变量的方式是等价的。

declare @dt2 datetime2(7)
declare @dt2 datetime2

为DateTime2类型的变量赋值,需要使用SysDateTime()和SysUTCDateTime(),这两个函数返回值的类型是DateTime2

declare @dt2 datetime2
set @dt2=SYSDATETIME()

4,Date数据类型 只存储日期,不存储时间,需要3B的存储空间,默认的数据格式是yyyy-MM-dd,支持的日期范围从0001-01-01到9999-12-31

可以使用日期字符串,getdate()函数和sysdatetime()函数为Date类型的变量赋值

declare @d date
set @d=‘2015-07-02‘
set @d=getdate()
set @d=SYSDATETIME()

5,Time数据类型 只存储时间,不存储日期,需要5B的存储空间.

Time默认的fractional second precision是7,默认的数据格式是hh:mm:ss.nnnnnnn。

Time数据类型的语法

time [ (fractional second precision) ]

推荐使用时间字符串和sysdatetime()函数为Time类型的变量赋值。不推荐使用GetDate()函数,GetDate()函数返回的是DateTime类型,时间部分的fractional second precision没有time类型高,如果对时间的precision要求高,请使用时间字符串和sysdatetime()函数为Time类型的变量赋值。

--declare @t time(7)
DECLARE @t time
set @t=‘13:48:43.2840467‘
set @t=SYSDATETIME()

--not recommend
set @t=GETDATE()

6,A simple example

declare @dt2 datetime2
declare @d date
declare @t time

--GetDate(),GetUTCDate() 返回值的数据类型是DateTime
--SysDateTime(),SysUTCDate() 返回值的数据类型是DateTime2

select  @dt=getdate(),
        @dt2=sysdatetime(),
        @d = convert(nvarchar(8),getdate(),112),
        @t=‘13:48:43.2840467‘

select @dt as dt,@dt2 as dt2,@d as d, @t as t

时间: 2024-08-05 06:17:30

sql server date,datetime,datetime2 和 time 简单介绍的相关文章

SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引(转载)

很久没写blog,不是懒,实在是最近我这的访问速度不好,用firefox经常上传不了图片 ....... 今天无意发现了SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引,分享一下: 测试环境: USE TEMPDBGO CREATE TABLE TB(ID INT IDENTITY(1,1) PRIMARY KEY,NAME VARCHAR(200),OPTIME DATETIME DEFAULT GETDATE())GODECLARE @I INT =

SQL Server中带事务的存储过程简单举例

先来看一个概念: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行.那么在存储过程里添加事务,则可以保证该事务里的所有sql代码要么完全执行要么完全不执行. 举个简单的带事务的存储过程: Begin Set NOCOUNT ON; --不返回影响行数 Set XACT_ABORT ON; --使用存储过程执行事务需要开启XACT_ABORT参数(默认为OFF) delete from table1 where n

Sql Server之旅——第十一站 简单说说sqlserver的执行计划

原文:Sql Server之旅--第十一站 简单说说sqlserver的执行计划 我们知道sql在底层的执行给我们上层人员开了一个窗口,那就是执行计划,有了执行计划之后,我们就清楚了那些烂sql是怎么执行的,这样 就可以方便的找到sql的缺陷和优化点. 一:执行计划生成过程 说到执行计划,首先要知道的是执行计划大概生成的过程,这样就可以做到就心中有数了,下面我画下简图: 1. 分析过程 这三个比较容易理解,首先我们要保证sql的语法不能错误,select和join的表是必须存在的,以及你是有执行

SQL Server中解决死锁的新方法介绍

SQL Server中解决死锁的新方法介绍 数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁,通过SQL Server 2005, 现在似乎有了一种新的解决办法. 将下面的SQL语句放在两个不同的连接里面,并且在5秒内同时执行,将会发生死锁. <ccid_nobr> <ccid_code>use Northwindbegin tran insert into Orders(CustomerId) values(@#[email protected]#)

导出SQL Server中所有Job的最简单方法

应用场景: 在将源SQL Server数据库服务器中的所有Job(作业)迁移至目标数据库服务器的过程中,需要先将这些Job导出为SQL脚本. 操作步骤: 1.在Microsoft SQL Server Management Studio中,选择SQL Server Agent->Jobs,按F7打开Object Explorer Details窗口,选中所有Job: 2.点击鼠标右键,选择Script Job as->CREATE To->New Query Editor Windows

SQL Server CLR全功略之一---CLR介绍和配置

Microsoft SQL Server 现在具备与 Microsoft Windows .NET Framework 的公共语言运行时 (CLR) 组件集成的功能.CLR 为托管代码提供服务,例如跨语言集成.代码访问安全性.对象生存期管理以及调试和分析支持.对于 SQL Server 用户和应用程序开发人员来说,CLR 集成意味着您现在可以使用任何 .NET Framework 语言(包括 Microsoft Visual Basic .NET 和 Microsoft Visual C#)编写

SQL内连接和外连接的简单介绍

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

SQL Server中DateTime与DateTime2的区别

DateTime字段类型对应的时间格式是yyyy-MM-dd HH:mm:ss.fff,3个f,精确到1毫秒(ms),示例2014-12-0317:06:15.433. DateTime2字段类型对应的时间格式是yyyy-MM-dd HH:mm:ss.fffffff,7个f,精确到0.1微秒(μs),示例2014-12-0317:23:19.2880929. 如果用SQL的日期函数进行赋值,DateTime字段类型要用GETDATE(),DateTime2字段类型要用SYSDATETIME().

SQL Server中DateTime与DateTime2的区别是什么

1.DateTime字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fff ,3个f,它的时间精度为1/300秒,在使用时会舍入到舍入到 .000..003 或 .007 秒三个增量,示例 2014-12-03 17:06:15.007. 2.DateTime2字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fffffff ,7个f,精确到0.1微秒(μs),示例 2014-12-03 17:23:19.2880929 . 3.如果用SQL的日期函数进行赋值,