SQL Server中smalldatetime的日期范围为何是[1900-01-01,2079-06-06]

article/2025/9/30 10:48:44
本文目录列表:
1、SQL Server中的基准日期
2smalldatetime的日期范围
3、smalldatetime的日期范围和无符号2字节整数的关系
4、总结语
5、参考清单列表
 
SQL Server中的基准日期
 
SQL Server 中针对datetime和smalldatetime这两个日期时间数据类型提供一个基准日期,也就是1900-01-01。
以下摘录自MSDN:

SQL Server 2005 数据库引擎用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储“基础日期”(即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参照日期。另外一个 4 字节存储天的时间,以午夜后经过的 1/300 秒数表示。

smalldatetime 数据类型存储天的日期和时间,但精确度低于 datetime。数据库引擎将 smalldatetime 值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后经过的分钟数。

注意:

1、以上“基础日期”(即1900年1月1日)也就是本文要说的基准日期。

 

smalldatetime的日期范围
smalldatetime的日期范围 根据msdn中相关资料是[1900-01-01,2079-06-06]。
smalldatetime的日期范围和无符号2字节整数的关系
 
SQL Server针对datetime和smalldatetime的数据类型的变量或字段列赋值为0或1900-01-01,其结果是相同的。
以下T-SQL代码效果如下:
smalldatetime日期的最大值为2079-06-06,如果针对该数据的赋值为65535 (该值为 无符号2字节整数的最大值2^16-1),结果也是为2079-06-06的,以下T-SQL代码效果如下:
从0对应1900-01-01,65535对应2079-06-06其对应关系,大致可以得到smalldatetime的日期范围和无符号2字节整数的范围正好一一对应的。可以通过T-SQL得到证明,如下:
注意:
1、中间省略了部分,仅显示头和尾的数据对应,中间省略。
2、函数dbo.ufn_GetNums可以参看SQL Server数字辅助表的实现。
总结语
 
smalldatetime的日期范围是和无符号2字节整数的范围一一对应的。针对这种对应关系,如果数据表中的字段列为日期时间数据类型,且精度为天,就可以保存一个整数和该日期保存一种对应关系,可以参考基准日期1900-01-01做起点映射,当然也可以选择其他的日期,当然也考虑相应的日期时间数据类型的范围的。
 
参考清单列表
1、 https://technet.microsoft.com/zh-cn/library/ms187819(v=sql.90).aspx
2、 http://www.cnblogs.com/dzy863/p/5080832.html

转载于:https://www.cnblogs.com/dzy863/p/5228998.html


http://chatgpt.dhexx.cn/article/07bM6SeD.shtml

相关文章

smalldatetime mysql_SQL 中 date 与datetime的区别

潇潇雨雨 我们看看这几个数据库中(mysql、oracle和sqlserver)如何表示时间mysql数据库:它们分别是 date、datetime、time、timestamp和year。date :“yyyy-mm-dd”格式表示的日期值 time :“hh:mm:ss”格式表示的时间值 datetime:…

SQL datetime和smalldatetime区别

datetime 存储大小8个字节,精确到分后的3为小数,日期范围从1753 年 1 月 1 日到 9999 年 12 月 31 日;而 smalldatetime存储大小为4个字节,精确到分,日期范围从1900 年 1 月 1 日到 2079 年 6 月 6 日。 参考 http://m…

170406回顾-SQL Server的smalldatetime类型比较

在比较SQL Server的类型为smalldatetime字段时出现下面的错误:将 expression 转换为数据类型 smalldatetime 时出现算术溢出错误 正确的比较方法如下:将long型转换为时间格式的字符串,再与smalldatetime类型的字段比较 SELECT * FROM tablename WHERE EditFlag > 2017/…

【SQL Server】将字符串转换为 smalldatetime 数据类型时失败

如下图,我在执行下列语句时遇到了“将字符串转换为 smalldatetime 数据类型时失败”的报错 然后去搜了一下,原来是存储过程的问题,我看的是其他博主的解答(但是还没有按照博主的方法实践过),内容详情有需要的自己去搜一…

android笔记1(activity跳转)

1.利用Android studio创建一个新项目,项目结构如下。 2.创建一个新的activity,用于跳转。 3.修改两个activity的布局,主activity中有一个输入文本框和一个按钮,实现点击按钮发送文本框的内容到第二个activity。第二个activity中有…

Activity 跳转的生命周期变化

1)Activity1跳转到Activity2的生命周期流程 1.Activity1启动:Activity1: onCreate()Activity1: onStart()Activity1: onResume()2.点击按钮跳转到Activity2:Activity1: onPause()Activity2: onCreate()Activity2: onStart()Activity2: onResume()Activit…

android activity跳转生命周期,Android中从一个Activity跳转到另一个Activity所经历的生命周期........

凡是Android开发人员都知道“Activity”是非常重要的;对其该“Activity”生命周期相信大家也比较熟悉了。 这篇文章主要探讨的是“从一个Activity启动跳转到另一个Activity中,所经历的生命周期中的过程” 实例: 1、MainActivity 启动 Secon…

Android开发之Activity(实现Activity跳转)

文章目录 基本框架新建activity实现activity跳转 基本框架 首先,每当我们新建一个APP工程,AS都会默认为我们创建一系列文件,比如MainActivity.java,该activity就是用户打开APP时默认弹出的activity,且该类一定要继承自…

activity跳转

1. 显示跳转 <Buttonandroid:layout_width"wrap_content"android:layout_centerHorizontal"true"android:layout_marginTop"20dp"android:text"页面跳转"android:onClick"intentClick"android:layout_height"wrap_c…

Android activity跳转使用详解

画面就是活动卡片,就是activity 继承 AppCompatActivity 的才是activity,否则就是一个普通的java类 案例:实现activity跳转 一 步骤 step1 new一个新的activity step2 看一下AndroidManifest.xml是否配置了新的activity step3 在MainActivity.java 里添加点击事件,跳转到acti…

Android Activity跳转

实现点击按钮&#xff0c;发送消息并跳转到另一个Activity MainActivity添加SendMessage方法 const val EXTRA_MESSAGE "com.example.myfirstapp.MESSAGE"class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super…

Activity跳转和Intent传值

Activity跳转和传值 1.重点内容 1.重点内容 Activity之间的跳转及数据传递&#xff08;如何跳转&#xff1f;如何返回&#xff1f;&#xff09;使用Intent在Activity之间传递数据&#xff09;&#xff08;单向和双向&#xff1f;&#xff09;回传数据&#xff08;怎么回传和…

android跳转界面动画,Android Activity跳转动画效果

Activity的跳转动画在5.0的时候做了一个重大的突破,下面来看一下吧 1.5.0之前的overridePendingTransition 相信大家对OverridePendingTransition还是很熟悉的,使用方法也是很简单就是 //fade_in是第二个界面的进入动画,fade_out是第一个界面退出动画,不想动画传入0 overri…

Activity之间跳转实现--安卓作业2

一.要求分析 目前已经利用adapter实现了将数据传输recycleview界面。这次作业主要是利用intent传递参数并实现activity之间的跳转 1.在Adapter中的内部类viewholder中设置一个监听&#xff0c;用于recyclerview中每一个item myviewholder.textView.setOnClickListener(new …

Activity的三种跳转

一个界面跳转到另一个界面&#xff0c;这就Activity的跳转。我们在开发中常见的跳转有三种。普通跳转、有返回值的跳转、透传跳转。我们先来看一种。 1 . Activity的普通跳转&#xff08;传值跳转&#xff09; 这个跳转是最简单的 Intent intentnew Intent(); intent.setCla…

如何使用正则表达式对输入数字进行匹配详解

前言&#xff1a; 最近有一个区间范围限制&#xff0c;一般255数字以下的都能在网上薅到&#xff0c;但是需要弄一个int16、int32、int64范围的输入限制......在网上逛了很久都没找到&#xff0c;基本都是从0开始教学那种&#xff0c;我又不想看&#xff0c;觉得写的范围太大了…

python正则表达式从字符串中提取数字

文章目录 python从字符串中提取数字使用正则表达式&#xff0c;用法如下&#xff1a;解题思路&#xff1a;代码如下&#xff1a; 匹配指定字符串开头的数字匹配包含指定字符串开头的数字匹配时间&#xff0c;17:35:24匹配时间&#xff0c;20181011 15:28:39 python从字符串中提…

Java正则表达式校验数字、字母及特殊字符

一、校验数字的表达式 1.数字&#xff1a;^[0-9]*$ 2.n位的数字&#xff1a;^\d{n}$ 3.至少n位的数字&#xff1a;^\d{n,}$ 4.m-n位的数字&#xff1a;^\d{m,n}$ 5.零和非零开头的数字&#xff1a;^(0|[1-9][0-9]*)$ 6.非零开头的最多带两位小数的数字&#xff1a;^([1-9][0-9…

JS正则表达式验证数字、非数字、正数、负数

<script type"text/javascript"> function judgeSign(num) {var reg new RegExp("^-?[0-9]*.?[0-9]*$");if ( reg.test(num) ) {var absVal Math.abs(num);return numabsVal?是正数:是负数;}else {return 不是数字;} } console.log(judgeSign(-…

使用正则表达式对输入数字进行匹配

前言&#xff1a; 最近有一个区间范围限制&#xff0c;一般255数字以下的都能在网上薅到&#xff0c;但是需要弄一个int16、int32、int64范围的输入限制......在网上逛了很久都没找到&#xff0c;基本都是从0开始教学那种&#xff0c;我又不想看&#xff0c;觉得写的范围太大了…