位置: 编程技术 - 正文
datetime 和 smalldatetime 代表日期和一天内的时间的日期和时间数据类型。 Microsoft SQL Server 用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date (即 年 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 年 1 月 1 日的 datetime 值。第一个4 字节: 年1 月1 日当日为0 ;之前的日期是负数;之后日期是正数。另外一个 4 字节存储以午夜后3 1/3 毫秒数所代表的每天的时间。 smalldatetime 数据类型存储日期和每天的时间,但精确度低于 datetime 。 SQL Server 将 smalldatetime 的值存储为两个 2 字节的整数。第一个 2 字节存储 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后的分钟数。日期范围从 年 1 月 1 日到 年 6 月 6 日,精确到分钟。 可以将这两种类型转换成float 浮点数, 其中整数部分就是对应的日期字节, 而小数部分是时间相应的比例, 如datetime 的小数部分就是占整天的毫秒数的比例;smalldatetime 的小数部分就是占整天的分钟数的比例. 因此我们可以直接将这两种类型的变量和整数、浮点数进行直接的加减。 datetime 从 年 1 月 1 日到 年 月 日的日期和时间数据,精确度为百分之三秒(等于 3. 毫秒或 0. 秒)。如下表所示,把值调整到 . 、. 、或 . 秒的增量。 示例 调整后的示例 // ::. -- ::. // ::.,// ::., // ::., 或// ::. -- ::. // ::., // ::., // ::. -- ::. // ::. 或// ::. -- ::. 我们常常需要搜索指定日期范围内的数据, 比如返回-- 当天内的数据, 你可能会这样写: date >= ‘-- ::.' and date <= ‘-- ::. ' 根据上面的调整规则, 其实这句语句的实际搜索范围为: date >= ‘-- ::.' and date <= ‘-- ::. ' 你会看到这包括了-- 的数据, 所以最好的正确的搜索语句为: date >= ‘-- ::.' and date < ‘-- ::. ' smalldatetime 从 年 1 月 1 日到 年 6 月 6 日的日期和时间数据精确到分钟。. 秒或更低的 smalldatetime 值向下舍入为最接近的分钟,. 秒或更高的 smalldatetime 值向上舍入为最接近的分钟。 --returns time as : SELECT CAST('-- ::.' AS smalldatetime) GO --returns time as : SELECT CAST('-- ::.' 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类型分析说明,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
数据库清除日志文件(LDF文件过大) 清除日志:DECLARE@LogicalFileNamesysname,@MaxMinutesINT,@NewSizeINTUSEszwzcheck--要操作的数据库名SELECT@LogicalFileName='szwzcheck_Log',--日志文件名@MaxMinutes=,--Limitontimeallowe
按日期选择最晚日期与最早日期对应的数的差值 表结构如下numberdate/1/:/1/:/1/:/1/:/1/:/1/:/1/:/1/:想得到当天的最早时间与最晚时间的number的
sql 时间函数 整理的比较全了 1.当前系统日期、时间selectgetdate()2.dateadd在向指定日期加上一段时间的基础上,返回新的datetime值例如:向日期加上2天selectdateadd(day,2,'--')--返回:2
标签: SQLSERVER 中datetime 和 smalldatetime类型分析说明
本文链接地址:https://www.jiuchutong.com/biancheng/349773.html 转载请保留说明!友情链接: 武汉网站建设