千家信息网

SQLSERVER 中datetime 和 smalldatetime类型的作用是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天就跟大家聊聊有关SQLSERVER 中datetime 和 smalldatetime类型的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以
千家信息网最后更新 2026年11月02日SQLSERVER 中datetime 和 smalldatetime类型的作用是什么

今天就跟大家聊聊有关SQLSERVER 中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 (格林尼治标准时间)时间。

看完上述内容,你们对SQLSERVER 中datetime 和 smalldatetime类型的作用是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

时间 日期 部分 类型 变量 函数 字节 数据 存储 字符 格式 不同 精确 两个 字符串 就是 整数 内容 小数 日到 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 湖北九亚互联网络科技有限公司 广州为想互联网科技有限公司 上海睿民互联网科技有限公司 科技互联网政务服务 朗新科技与工业互联网 港股互联网科技股 深圳互联网络科技有限公司 美国互联网黑科技 上海致骋互联网科技 润盈互联网科技 互联网实体化科技化 互联网之后的科技是什么 北京大学互联网科技怎么样 广州市恰铎互联网科技有限公司 健康食品互联网创新科技园项目 科技大学互联网 华中科技大学互联网的牛人 云南省自由互联网科技有限公司 领航科技大厦互联网公司 互联网医疗科技 互联网汽车科技小镇 剑昆互联网络科技有限公司临桂 央行互联网金融科技公司 港股科技和互联网 杭州壁岐互联网科技有限公司 哈尔滨屹滨互联网科技有限公司 用友工业互联网科技发展 互联网风格科技公司名称 互联网高科技绘画
0