SQL Server数据库日期型1900-01-01处理

SQL Server与Excel日期格式转换的6种解决方案 日期时间数据在数据库系统与电子表格软件间的格式转换是数据处理的常见需求。SQL Server采用DATETIME类型存储日期,而Excel则使用序列号系统表示日期时间。这种底层存储机制的差异导致直接导出时会出现数字串而非可读日期的问题。理解OLE自动化日期(Excel采用的序列号系统)与数据库日期类型的转换原理,对于实现跨系统数据交互至关重要。通过CONVERT函数、Power Query数据清洗、BCP批量导出等方法,可以高效解决格式转换问题。这些技术在财务数据分析、业务报表生成等场景中具有广泛应用价值, 阅读详情
AI摘要

本文讨论了在使用SQLServer数据库时遇到的日期型字符串处理问题,特别是当前端传递空字符串时,数据库将其转换为1900-01-01的情况。提供了几种解决方案,包括更改字段类型为varchar并进行格式化,以及如何在读取和写入时进行适当的处理。

SQL Server数据库日期型格式处理

在项目中使用SQL Server数据库会遇到有趣的问题,前端页面如果传递一个日期型字符串为’ ',插入到数据库后值变为1900-01-01,前端页面也会显示这个日期

这是由于数据库中采用了datetime型字段,它是默认由8个字节组成,存储类型为数字,前4个字节存储1900-01-01之前/之后的天数,后4个字节存储00:00后的毫秒数。

主要说下处理方式:

  1. 数据库不采用datetime型,直接存储为varchar型,只是每次存储时用java代码或者SQL语句中去格式化,如:convert(varchar(10),日期,120)。
  2. 传入值为 ‘’ 时,数据库中会存为1900-01-01,那直接传入null即可。
  3. 取值时遇1900-01-01进行处理,java或者SQL都可以,如:
select case when FIELDNAME = '1900-01-01' then '' when FIELDNAME <>  '1900-01-01' then substring(convert(varchar,FIELDNAME,120),1,10) end as RESULT from TABLENAME;

总之,要么不用datetime型字段,用了就在写或者读时去处理即可,各人要求不同,可以自如处理。

SQL Server日期数据导出Excel格式问题解决方案 数据库与电子表格系统间的数据交互常遇到日期格式兼容性问题。SQL Server的DateTime类型以浮点数存储日期时间信息,而Excel则采用不同的序列值系统进行解释。这种底层存储机制的差异导致直接导出的日期数据显示为数字串。理解数据库日期存储原理和Excel处理逻辑,掌握数据类型转换技巧,对于ETL流程和报表生成至关重要。通过SQL格式化输出、BCP工具控制或Python等编程语言中转,可以有效解决跨系统日期格式问题,特别适合财务数据迁移、业务报表自动化等场景。文章提供的六种解决方案覆盖了从简单查询修改 阅读详情

相关推荐

探讨:sql插入空,默认1900-01-01 00:00:00.000的解决方法详解

sql2005 若字段定义的类型为datetime,插入为”(空),那么会默认值为1900-01-01 00:00:00.000 解决方法查询的时候过滤下cast(nullif(”,”) as datetime) 代码如下:select cast(” as datetime)    , cast(nullif(”,”) as datetime)    , isnull(cast(nullif(”,”) as datetime),getdate())/*———————– ———————– ———————–1900-01-01 00:00:00.000 NULL                 

sql server 时间1900-01-01

关于时间的处理,在输入值的时候,由于没有输入,结果在数据库中却保存为1900-01-01,这样显然不符合要求。 经过测试: 1.发现如果给日期时间类型的赋予默认当前时间,则在insert表中字段没有的情况下,存入数据库的值就是当前时间,这个没有疑问,但是mysql中不支持时间类型的默认值。 2.如果给日期字段(以datetime为例)一个null的value,则保存到数据库是null,也没有

dhhdhhdhhdhh的专栏 3800

细胞膜电学特性的分数阶微积分建模

分数阶微积分在细胞膜电学特性建模中的应用主要体现在对细胞膜的电容行为和神经元放电活动的更精确描述上。

冰河世纪20的博客 619

数据库保存的时候出现1900-01-01

当前端传过来的日期类型是‘’,空字符串的时候,保存在数据库的值就是1900-01-01 解决方法:我们将前端传过来的值在前端进行处理,变成null传到数据库保存。当我们要返回给前端的时候,我们要进行转换,因为null赋值给日期控件的时候,数值是不合法的。我们要把null变成'',空字符串可以赋值给日期控件,当然这个转换,我们可以在前端或者后端都可以转换。 ...

周自包的博客 6450

Camera ITS测试

一、手机端设置: 将 CtsVerifier.apk 安装到设备上, 连接上linux主机。 二、主机端设置: 基础:CTS测试运行环境 然后,主机安装python2.7,及numpy/scipy/matplotlib/opencv 栈和 python 成像库。按照下面的命令依次安装: sudo apt­-get install python-­numpy sudo apt-­g...

wangubuntu的专栏 7783

OpenClaw本地部署教程

本文详细介绍了在Windows 11系统上部署OpenClaw与Ollama本地模型的完整流程。主要内容包括:硬件要求说明、Node.js环境配置、Ollama模型安装与定制(重点扩展上下文窗口至32768 tokens)、OpenClaw核心框架安装与对接、常见问题解决(如模型上下文窗口过小报错)以及可选技能扩展和飞书接入方案。部署全程约需1-2小时,强调使用备用设备或虚拟机以确保安全,并提供关键配置参数和排错命令。该方案实现了"数据不出门、推理本地化"的私有化部署目标。

技术引领业务创新 2575

Sqlserver Date类型为空,数据库中存储1900-01-01解决方法

今天在做一个存储操作的时候发现有个字段create_date的值为1900-01-01,这个数据非常可疑,然后我去查看前端传来的参数是这样 "creation_date": "" VO中的字段: @JsonProperty("creation_date") private String creationDate; PO的中的字段: @Column(name="creation_date") private String creationDate; 这里解释下为什么用String类型来传时间,因为只要

我怀念的 4626

大疆M3508电机使用CAN通信进行速度PID闭环控制详解

目录一. 简介二. 电机通信协议三. 电机PID控制原理四. 官方代码移植-中断接收五. 官方代码移植-查询接收 一. 简介 之前写过一篇文章STM32实现四驱小车(五)电机控制任务——电机速度PID控制算法,其中是以大疆的M3508电机为例进行讲解的(没错,就是RoboMaster机器人同款电机,不过Robomaster上的电机好像是小一号的M2006)。不少小伙伴私信问我要代码,我都回复说不是有官方demo么。后来问的人多了我大概明白了,看来官方的Demo还是有点门槛。可能是带FreeRTOS操作系统看

qq_30267617的博客 7万+

SQL datetime为1900-01-01 00:00:00.000

在sqlserver数据库中如果时间insert或者update为’ ‘时数据库会自动填写值为’1900-01-01 00:00:00.000’ 那已经存在的我们可以这样把这个值去掉 update table set time=null where time= '1900-01-01 00:00:00.000' 然后在insert或者update时空就不要操作这个字段就好 ...

真的以为的博客 3383

海康工业相机BayerRG8转BGR8实战:手把手教你用OpenCV实现高效图像转换

本文详细解析了海康工业相机BayerRG8格式到BGR8格式的高效转换实战。针对工业视觉项目中高帧率、大分辨率场景下的性能瓶颈,文章对比了海康SDK原生方案与OpenCV多种转换方法的优劣,并提供了从基础实现到高级优化(如多线程流水线、内存管理、SIMD指令集应用)的完整代码示例与性能调优策略,帮助开发者构建稳定、高效的图像处理系统。

weixin_29237635的博客 523

深入剖析:NAND Flash与SD NAND(贴片式SD卡)存储扇区分配表架构差异与优化策略

本文深入探讨了NAND Flash与SD NAND(贴片式SD卡)在存储技术中的架构差异及其优化策略。NAND Flash作为非易失性存储器,依赖主控芯片进行坏块管理和磨损均衡,而SD NAND则通过内置控制器和标准文件系统(如FAT)简化了存储管理。两者在写入性能、容量扩展和可靠性方面各有优劣,NAND Flash需通过磨损均衡和写入合并优化性能,而SD NAND则通过高容量和高速传输提升效率。文章为嵌入式系统开发者和硬件工程师提供了关于如何根据需求选择并优化存储介质的参考。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1236

SQL Server日期处理datetime和date之间的相互转换

 日期类型概述SQL Server中的日期类型包括datetime和smalldatetime,仅能处理可以识别为1753年~9999年间的日期的值,没有单独的日期型或时间型。1.datetimedatetime类型处理从1753年1月1日~9999年12月31日的日期和时间数据,精确度为百分之三秒。即:对于0.000~0.001、0.009的日期值,调整为

yiyi0518的专栏 1万+

在 FlexSim 中建 AGV 小车模型时,如果设定“每次充电需要 2 小时才能充满”,应该如何配置 AGV 的充电功能?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 880

sql日期时间处理集合

Sql Server 日期时间处理集合 convert日期转换格式为20或120时,得到的字符串是不带毫秒的。 如 select CONVERT(VARCHAR(23),getdate(),120或20) 2003-01-07 21:46:43 日期转换格式为21或121时,得到的字符串是带毫秒的 select CONVERT(VARCHAR(23),getdate(),121或

cdz1022的专栏 4443

从零开始讲DDR(8)——AXI 接口MIG 使用(1)

我们简单拆解了MIG AXI接口中测试文件的整体框架,首先在sim_tb_top.sv文件中例化了DDR模型和example_top。在example_top中,又例化了MIG IP和一个流量产生器ddr4_v2_2_8_axi_tg_top。在ddr4_v2_2_8_axi_tg_top中的主要功能是分别例化了boot_mode_gen,prbs_mode_gen,custom_mode_gen和axi_opcode_gen。

apple_53311083的博客 1587

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SQL Server 日期相关

对于开发人员来说,日期处理或许简单,或许很难。结合自己过往的开发经验并整合网上的例子,总结出一些日期相关的操作,供自己备用及为大家分享:   一、日期类型: 对于SQL Server 2008 来说(因为2000甚至2005已经稍微有被淘汰的迹象,所以在此不作过多说明,加上自己工作使用的是2008R2。所以不保证08以前的能用),日期类型有: 数据类型

woshizhaoxuhui的专栏 671

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

sql server日期比较日期查询常用语句

 通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。  在使用本文中的例子之前,你必须注意以下的问题。大部

xiong1000 only focus on asp.net 2.0 2177

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

sql server日期比较、日期查询常用语句

SQL SERVER中,你可能需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。 在使用本文中的例子之前,你必须注

liugy1126的专栏 1062

【转】 关于SQL SERVER 2000的一些基本知识(2)——SQL SERVER 2000日期处理

【转自http://blog.youkuaiyun.com/longhorn_fu/archive/2005/09/02/470008.aspx】 日期是数据处理中经常使用到的信息之一。生日、数据处理时间、计划的预计完成时间,按年、季、月的统计,这些都属于日期处理的范畴。由于日期中包含了年、季、月、日等众多信息,不同的国家对日期格式、日期文字描述及星期有不同的规定,因此产生了日期处理的复杂性。本章...

aegckeir70762的博客 138

SQL server 判断不合法的日期

我整理的一些关于【Server,SQL,示例代码】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1SQL Server 判断不合法的日期 在 SQL Server 数据库中,日期和时间数据是非常常见的类型。然而,输入不合法或格式错误的日期可能会导致查询失败或数据不...

weixin_36841755的博客 644

SQL Server中的日期计算

通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。            在使用本文中的例子之前,你必须注

Hello_World_wusu的专栏 884

插入数据类型为DateTime时为空值时,为什么SQL SERVER会自动加上"1900-01-01"

系统默认的吧, update   tablename   set   时间字段= ' ' SQL   SERVER会自动加上 "1900-01-01 " update   tablename   set   时间字段=null 就不会了   ====================================== ull值不会,但是其他会。在系统中,时间不是一个字符串,而是一个带...

weixin_33672109的博客 1651
上一篇: 图片跟随用户对浏览器的操作自动调整大小
下一篇: Xcode9.0打包IOS APP问题总结
Droy`Z
博客等级 码龄19年 75粉丝 57原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值