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

datetime报错 sql脚本_SQLSERVER 中datetime 和 smalldatetime类型分析说明相关推荐

  1. datetime报错 sql脚本_Linux中Mysql数据库备份shell脚本编写实例

    学了段时间的Linux,也学习了shell脚本编写的基本命令与语法,现做一个综合案例来详细讲解. 要求:1).每天凌晨备份数据库shaoxiao到/data/backup/db中 2).备份开始和备份 ...

  2. datetime报错 sql脚本_《SQL必知必会》附录A样例表的获取和导入

    拿到书的第二天就坐上了疫情期间的第一次飞机...飞机还延误了2个小时,有国外入境转机旅客搭乘了该趟航班,第一次觉得疫情离我这么近,不过还是坚持着到达了目的地,能做的只有带好口罩和手套.3个小时的飞行时 ...

  3. win10防火墙_Win10端,iCloud报错:鉴定过程中发生错误

    Win10端,iCloud报错:鉴定过程中发生错误 首先,如果iCloud中有重要.未备份.未上传.未同步数据的话及时进行备份,可以直接在win10端进行备份.备份!备份!备份! 其次,看看新闻,是不 ...

  4. MySQL8报错:授权语句中的(IDENTIFIED BY)报语法错误

    MySQL8报错:授权语句中的(IDENTIFIED BY)报语法错误 概述 问题简述:MySQL 8执行授权语句报语法错误 遇到问题的时间:2021-09-08 我的MySQL 8的版本:Serve ...

  5. 关于加了union报错sql命令未正确结束

    这是一个写sql过程中遇到的小问题 已知,union上下的sql都可以单独正常运行,但是加了union后会报错sql命令为正确结束 为了方便查看union的范围还在每部分sql都用括号括起来,执行更糟 ...

  6. 使用mybatis插入数据到数据库中,显示插入成功,且没有报错,但是数据库中并没有新插入的数据的原因

    使用mybatis插入数据到数据库中,显示插入成功,且没有报错,但是数据库中并没有数据的原因 没有提交事务,有时没有配置自动提交事务的设置,所以需要手动提交事务,即 sqlSession.commit ...

  7. maven install 报错 source 1.5 中不支持 lambda 表达式

    maven install 报错 source 1.5 中不支持 lambda 表达式 maven-compiler-plugin 在编译的时候如果不指定jdk的版本,会默认使用jdk1.5 所以在编 ...

  8. 【错误记录】VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ② | 删除交换空间 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 [错误记录]VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ) 博客中 , 给出了解决方案 ...

  9. SQL数据库挂起 SQL数据库附加报错 SQL数据库824错误修复

    SQL数据库挂起 SQL数据库附加报错 SQL数据库824错误修复 数据类型 MSSQL 2012 数据大小 4.5 GB 故障检测 附加数据库提示824错误 一般是由于断电非法关机导致页面损坏. 客 ...

最新文章

  1. 除了速度,5G还能带来什么?
  2. C++ dlopen mini HOWTO 一篇非常好的介绍C++ dlopen linux/mac os x 编程的资料
  3. 666! 玩王者,识英雄,这样也能上顶会!
  4. Element-UI-的登录页面_改进---Element-UI工作笔记006
  5. HashSet存储元素保证唯一性的代码及图解
  6. 作为一个对电脑配置一概不知的人,怎样才能一步一步了解电脑构造并且由此来学会怎样自己配置电脑?
  7. win10使用import pcap 建议放弃,还是使用linux系统吧
  8. HTML5视频教程比较好的学习教程推荐
  9. 数模笔记:蒙特卡洛模型
  10. android.mk 系统签名,APK-安装系统认证签名的两种解决方法
  11. Veil-Evasion免杀
  12. Java中通过某一年的两个时间计算天数
  13. 剑指Offer-22反转链表
  14. php框架tp6自学笔记——pdf文件下载
  15. VS2015报错C4996处理
  16. 【项目三、车牌检测+识别项目】四、使用LPRNet进行车牌识别
  17. 将VS2019设置成英文版
  18. 在html里如何下雪花,html加动态雪花
  19. 常见网络摄像机默认使用的端口,RTSP地址
  20. MIUI10刷入Magisk模块——记小白的第一次刷机

热门文章

  1. 产品壁垒_打破人员,流程和产品之间的壁垒
  2. keras 微调整模型_如何围绕微服务调整团队
  3. devops什么意思_DevOps有什么意义?
  4. 管理者和领导者的区别_见到一个领导者时如何识别
  5. word文档保存发生错误_文档还是没有发生
  6. HTML5 Canvas save 保存恢复状态
  7. Bootstrap 折叠插件
  8. 软件工程测试旅游管理系统,旅游管理系统的设计与实现
  9. vs怎么写html5页面,怎么使用vscode写html5
  10. python3.6.1安装,linux下安装Python3.6.1