datetime报错 sql脚本_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 (格林尼治标准时间)时间。
datetime报错 sql脚本_SQLSERVER 中datetime 和 smalldatetime类型分析说明相关推荐
- datetime报错 sql脚本_Linux中Mysql数据库备份shell脚本编写实例
学了段时间的Linux,也学习了shell脚本编写的基本命令与语法,现做一个综合案例来详细讲解. 要求:1).每天凌晨备份数据库shaoxiao到/data/backup/db中 2).备份开始和备份 ...
- datetime报错 sql脚本_《SQL必知必会》附录A样例表的获取和导入
拿到书的第二天就坐上了疫情期间的第一次飞机...飞机还延误了2个小时,有国外入境转机旅客搭乘了该趟航班,第一次觉得疫情离我这么近,不过还是坚持着到达了目的地,能做的只有带好口罩和手套.3个小时的飞行时 ...
- win10防火墙_Win10端,iCloud报错:鉴定过程中发生错误
Win10端,iCloud报错:鉴定过程中发生错误 首先,如果iCloud中有重要.未备份.未上传.未同步数据的话及时进行备份,可以直接在win10端进行备份.备份!备份!备份! 其次,看看新闻,是不 ...
- MySQL8报错:授权语句中的(IDENTIFIED BY)报语法错误
MySQL8报错:授权语句中的(IDENTIFIED BY)报语法错误 概述 问题简述:MySQL 8执行授权语句报语法错误 遇到问题的时间:2021-09-08 我的MySQL 8的版本:Serve ...
- 关于加了union报错sql命令未正确结束
这是一个写sql过程中遇到的小问题 已知,union上下的sql都可以单独正常运行,但是加了union后会报错sql命令为正确结束 为了方便查看union的范围还在每部分sql都用括号括起来,执行更糟 ...
- 使用mybatis插入数据到数据库中,显示插入成功,且没有报错,但是数据库中并没有新插入的数据的原因
使用mybatis插入数据到数据库中,显示插入成功,且没有报错,但是数据库中并没有数据的原因 没有提交事务,有时没有配置自动提交事务的设置,所以需要手动提交事务,即 sqlSession.commit ...
- maven install 报错 source 1.5 中不支持 lambda 表达式
maven install 报错 source 1.5 中不支持 lambda 表达式 maven-compiler-plugin 在编译的时候如果不指定jdk的版本,会默认使用jdk1.5 所以在编 ...
- 【错误记录】VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ② | 删除交换空间 )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 [错误记录]VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ) 博客中 , 给出了解决方案 ...
- SQL数据库挂起 SQL数据库附加报错 SQL数据库824错误修复
SQL数据库挂起 SQL数据库附加报错 SQL数据库824错误修复 数据类型 MSSQL 2012 数据大小 4.5 GB 故障检测 附加数据库提示824错误 一般是由于断电非法关机导致页面损坏. 客 ...
最新文章
- 除了速度,5G还能带来什么?
- C++ dlopen mini HOWTO 一篇非常好的介绍C++ dlopen linux/mac os x 编程的资料
- 666! 玩王者,识英雄,这样也能上顶会!
- Element-UI-的登录页面_改进---Element-UI工作笔记006
- HashSet存储元素保证唯一性的代码及图解
- 作为一个对电脑配置一概不知的人,怎样才能一步一步了解电脑构造并且由此来学会怎样自己配置电脑?
- win10使用import pcap 建议放弃,还是使用linux系统吧
- HTML5视频教程比较好的学习教程推荐
- 数模笔记:蒙特卡洛模型
- android.mk 系统签名,APK-安装系统认证签名的两种解决方法
- Veil-Evasion免杀
- Java中通过某一年的两个时间计算天数
- 剑指Offer-22反转链表
- php框架tp6自学笔记——pdf文件下载
- VS2015报错C4996处理
- 【项目三、车牌检测+识别项目】四、使用LPRNet进行车牌识别
- 将VS2019设置成英文版
- 在html里如何下雪花,html加动态雪花
- 常见网络摄像机默认使用的端口,RTSP地址
- MIUI10刷入Magisk模块——记小白的第一次刷机
热门文章
- 产品壁垒_打破人员,流程和产品之间的壁垒
- keras 微调整模型_如何围绕微服务调整团队
- devops什么意思_DevOps有什么意义?
- 管理者和领导者的区别_见到一个领导者时如何识别
- word文档保存发生错误_文档还是没有发生
- HTML5 Canvas save 保存恢复状态
- Bootstrap 折叠插件
- 软件工程测试旅游管理系统,旅游管理系统的设计与实现
- vs怎么写html5页面,怎么使用vscode写html5
- python3.6.1安装,linux下安装Python3.6.1