≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

SQL Server 中datetime 和 smalldatetime类型分析说明

人气:483 时间:2019-05-30

这篇文章主要为大家详细介绍了SQL Server 中datetime 和 smalldatetime类型分析说明,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

datetime 和 smalldatetime
代表日期和一天内的时间的日期和时间数据类型。
Microsoft SQL Server 用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date (即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 1753 年 1 月 1 日的 datetime 值。第一个4 字节:1900 年1 月1 日当日为0 ;之前的日期是负数;之后日期是正数。另外一个 4 字节存储以午夜后3 1/3 毫秒数所代表的每天的时间。
smalldatetime 数据类型存储日期和每天的时间,但精确度低于 datetime 。 SQL Server 将 smalldatetime 的值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后的分钟数。日期范围从1900 年 1 月 1 日到 2079 年 6 月 6 日,精确到分钟。
可以将这两种类型转换成float 浮点数, 其中整数部分就是对应的日期字节, 而小数部分是时间相应的比例, 如datetime 的小数部分就是占整天的毫秒数的比例;smalldatetime 的小数部分就是占整天的分钟数的比例. 因此我们可以直接将这两种类型的变量和整数、浮点数进行直接的加减。
datetime
从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确度为百分之三秒(等于 3.33 毫秒或 0.00333 秒)。如下表所示,把值调整到 .000 、.003 、或 .007 秒的增量。

 
示例

 

调整后的示例

 

01/01/98 23:59:59.999

 

1998-01-02 00:00:00.000

 

01/01/98 23:59:59.995,
01/01/98 23:59:59.996,
01/01/98 23:59:59.997, 或
01/01/98 23:59:59.998

 

1998-01-01 23:59:59.997

 

01/01/98 23:59:59.992,
01/01/98 23:59:59.993,
01/01/98 23:59:59.994

 

1998-01-01 23:59:59.993

 

01/01/98 23:59:59.990 或
01/01/98 23:59:59.991

 

1998-01-01 23:59:59.990

 


我们常常需要搜索指定日期范围内的数据, 比如返回1998-01-01 当天内的数据, 你可能会这样写:
date >= ‘1998-01-01 00:00:00.000' and date <= ‘1998-01-01 23:59:59.999 '
根据上面的调整规则, 其实这句语句的实际搜索范围为:
date >= ‘1998-01-01 00:00:00.000' and date <= ‘1998-01-02 00:00:00.000 '
你会看到这包括了1998-01-02 的数据, 所以最好的正确的搜索语句为:
date >= ‘1998-01-01 00:00:00.000' and date < ‘1998-01-02 00:00:00.000 '
smalldatetime
从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据精确到分钟。29.998 秒或更低的 smalldatetime 值向下舍入为最接近的分钟,29.999 秒或更高的 smalldatetime 值向上舍入为最接近的分钟。
--returns time as 12:35
SELECT CAST('2000-05-08 12:35:29.998' AS smalldatetime)
GO
--returns time as 12:36
SELECT CAST('2000-05-08 12:35:29.999' AS smalldatetime)
GO
赋值:
上面说了时间的实际格式,我们在给一个时间变量赋值时肯定不会赋一个浮点数给该变量,更多的情况是我们给这个变量赋一个字符串,系统会自动将字符串变成时间格式并保存到数据库中。若字符格式错误,则报错。根据语言不同,世界上有多种不同的用字符串表示时间方式,我们可以通过 sp_helplanguage 查看不同语言下的缺省时间格式,如简体中文的时间格式为 ymd ,可以通过 SET DATEFORMAT 来暂时更改这个缺省值。
时间函数
DATEADD :可以对时间类型的指定部分进行加减计算,虽然我们上面说了可以进行直接的加减,但是我们可以更方便的利用这个函数对指定部分,如年月日时分秒等进行加减。我们常常根据一个时间来构造出另外一个时间,比如下个月的今天 , 本月底等等,我们应该也尽量使用 DATEADD 函数来构造,它可以避免一些闰月、年底、月底之类的错误,我以前就是根据 DATENAME 来构造的,常常要考虑这些问题。
DATEDIFF :该函数对两个时间变量对指定部分进行比较计算。此函数不考虑比指定日期部分更高的粒度级别,它只考虑更低级别的部分。对时间的比较应尽量使用本函数。
举个出错的例子:返回两个时间变量的小时差。若使用 DATEPART(HOUR, @T2 - @T1) 就可能会出错;你应该使用 DATEDIFF(HOUR, @T1, @T2) 。
DATEPART :返回时间变量的指定部分的值。
DATENAME :返回时间变量的指定部分的值,和 DATAPART 不同的是本函数返回的是个字符串类型
GETDATE() 返回本机器的当前时间。 CURRENT_TIMESTAMP 变量与本函数功能相同。
GETUTCDATE() 返回本机器的当前 UTC (格林尼治标准时间)时间。

本文来自:http://www.q1010.com/179/7499-0.html

注:关于SQL Server 中datetime 和 smalldatetime类型分析说明的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:SQL SERVER

您可能感兴趣的文章

  • 用户"sa"登陆失败 SQLServer 错误18456的解决方法
  • SQL Server做购物车系统时利用到得几个sqlserver 存储过程
  • SQLServer 优化SQL语句 in 和not in的替代方案
  • win2003 安装 sqlserver 2005的方法
  • SQL Server当恢复sqlserver bak文件时,原始的用户无法删除的解决方法
  • SQL Server分页存储过程(三)在sqlserver中打造更加准确的分页结果
  • 分页存储过程(二)在sqlserver中返回更加准确的分页结果
  • SQLServer上查看SQL语句的执行时间的方法
  • SQL Server 2000数据库同步 同步两个SQLServer数据库的内容
  • SQLServer触发器创建、删除、修改、查看示例代码
上一篇:SQL Server 数据库清除日志文件(LDF文件过大)
下一篇:SQL Server 检查所使用的语句是否符合标准
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。