smalldatetime mysql_SQLSERVER中datetime和smalldatetime类型分析说明「建议收藏」

smalldatetime mysql_SQLSERVER中datetime和smalldatetime类型分析说明「建议收藏」datetime和smalldatetime代表日期和一天内的时间的日期和时间数据类型。MicrosoftSQLServer用两个4字节的整数内部存储datetime数据类型的值。第一个4字节存储basedate(即1900年1月1日)之前或之后的天数。基础日期是系统参考日期。不允许早于1753年1月1日的datetime值。第一个4字节:…

大家好,又见面了,我是你们的朋友全栈君。

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 (格林尼治标准时间)时间。

您可能感兴趣的文章:sql server中datetime字段去除时间的语句

sql语句中如何将datetime格式的日期转换为yy-mm-dd格式

使用 MySQL Date/Time 类型

sql server中datetime字段去除时间代码收藏

sqlserver和oracle中对datetime进行条件查询的一点区别小结

mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数

MySQL时间字段究竟使用INT还是DateTime的说明

Sql中将datetime转换成字符串的方法(CONVERT)

MySql用DATE_FORMAT截取DateTime字段的日期值

SqlDateTime溢出该怎么解决

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144204.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python爬取书包网文章实战总结

    Python爬取书包网文章实战总结这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入爬取书包网文…

    2022年6月29日
    28
  • python游戏代码200行_python做贪吃蛇

    python游戏代码200行_python做贪吃蛇python语言,总所周知是比较简单的,而且代码也不会像java那样多,下面就使用python的第三方库pygame进行开发一个贪吃蛇游戏。1.pygame的安装直接在cmd当中使用pipinstallpygame进行安装。或者在pycharm当中自动导入安装也OK2.全局变量的定义在代码当中会使用到很多这种变量的值,直接在最开始进行定义,后面获取变量即可W=600#屏幕宽H=400#高fps=12#帧率size=(W,H)ROW=

    2025年9月13日
    5
  • 黑客文化简史_抖音培训基地学费大约多少

    黑客文化简史_抖音培训基地学费大约多少本篇原作者为EricS.Raymondesr@snark.thyrsus.com,他是一位大哥级的Hacker,写了很多自由软件,知名著作有JargonFile等,近年来发表“大教堂与集市”论文为Opensourcesoftware努力,Netscape愿意公开Navigator的原始码,与这篇文章有很大的关系。序曲:RealProgrammer  故事一开始,我

    2025年12月5日
    2
  • C#数组–(一维数组,二维数组的声明,使用及遍历)

    C#数组–(一维数组,二维数组的声明,使用及遍历)数组:是具有相同数据类型的一组数据的集合。数组的每一个的变量称为数组的元素,数组能够容纳元素的数称为数组的长度。一维数组:以线性方式存储固定数目的数组元素,它只需要1个索引值即可标识任意1个数组元素

    2022年7月2日
    23
  • VSCODE 打造完美java开发环境「建议收藏」

    VSCODE 打造完美java开发环境「建议收藏」vscodeJava开发环境配置(此博客已更新,之前的排版不利于阅读)使用vscode后,你可能无法忍受eclipse:)最后更新时间:2018-07-01(博客地址)系统需安装jdk1.8,配置好环境变量JAVA_HOME打开vscode,安装java相关插件LanguagesupportforJava™forVisualStud…

    2022年7月20日
    14
  • Android中的layout_gravity和gravity的区别[通俗易懂]

    Android中的layout_gravity和gravity的区别[通俗易懂]在Android的布局中,除了padding和margin容易弄混之外,还有layout_gravity和gravity。按照字面意思来说,layout_gravity就是相对于layout来设置的。

    2022年7月4日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号