首页 > 数据库 >关于SQLserver中timestamp字段与datetime转换溢出的原由与解决办法

关于SQLserver中timestamp字段与datetime转换溢出的原由与解决办法

时间:2024-12-21 18:58:23浏览次数:8  
标签:同步 timestamp SQLserver dbts datetime field bigint

在做系统数据同步时,ERP厂商会在某个表单中设定timestamp的时间戳的字段。当数据在更改时,timestamp字段会进行自动更新。

查看时间戳的语句为:SELECT @@dbts 

特别注意:有些时候timestamp可能进行转换成datetime ,SQL语句为:select cast(timestamp_field as datetime) as timestamp_field from yourtable 

但有时同样的语句时查询执行后会报:将 expression 转换为数据类型 datetime 时出现算术溢出错误

别慌,切记timestamp与datetime 没有必然的联系。为什么有的可以有可不行。取决于SELECT @@dbts 的增识值,因为数据库@@dbts已超过datetime的显示转换了。

那对于同步我们咱办?把timestamp转换为bigint就可以记录最后一次数据表修订的值了。

SELECT 
,CAST( timestamp_field AS VARBINARY(8)) AS 'timestamp转十六进制字符串'
,CONVERT(BIGINT,timestamp_field) AS 'timestamp转bigint'
FROM yourtable

更新前先调上次同步的timestamp的bigint值,然后本次更新大于上次timestamp的值就可以了。

如上次同步timestamp的bigint的值为9766538220,本次再同步是同步大于9766538220就可以了。

最郁闷的是ERP厂家在删除时记录都没有了,SAP的是逻辑删除好些!

标签:同步,timestamp,SQLserver,dbts,datetime,field,bigint
From: https://www.cnblogs.com/approx/p/18621046

相关文章

  • C#毕业设计下载(全套源码+配套论文)——基于C#+asp.net+sqlserver的选课系统设计与实现
    基于C#+asp.net+sqlserver的选课系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于C#+asp.net+sqlserver的选课系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于C#+asp.net+sqlserver的选课系统设计与实现(毕业论文+程序源码)1、项目简介2、资源......
  • C#毕业设计下载(全套源码+配套论文)——基于C#+asp.net+sqlserver的学生成绩管理系统设
    基于C#+asp.net+sqlserver的学生成绩管理系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于C#+asp.net+sqlserver的学生成绩管理系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于C#+asp.net+sqlserver的学生成绩管理系统设计与实现(毕业论文+程......
  • nacos兼容sqlserver数据库
    源码连接:wanqiu/nacos-datasource-support1、最外层pom.xml添加驱动:<dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>12.6.0.jre8</version></dependency>2......
  • Instant 和 LocalDateTime 有什么区别?
    我知道那件事:Instant是一种用于计算的“技术”时间戳表示形式(纳秒)。LocalDateTime是日期/时钟表示形式,包括人类的时区。尽管如此,最终IMO都可以作为大多数应用程序用例的类型。例如:当前,我正在运行一个批处理作业,我需要根据日期计算下一次运行,并且我正在努力寻找这两种类型之......
  • SqlServer运维——查询阻塞
    目录0.演示阻塞1.基于sys.dm_exec_requests视图2.在MSSM中通过“活动和监视器”查看3.完整脚本查询阻塞0.演示阻塞首先MSSM中打开一个查询会话,这个是进程68执行一个更新操作,但是不提交事务BEGINTRANSACTIONUPDATEdbo.AAMyTestMsgSET Mes='1'WHERECreateTime='202......
  • sqlserver查字段的默认值
    在SQLServer中,您可以通过查询系统视图来查找字段的默认值。以下是一些查询字段默认值的常用方法:使用 INFORMATION_SCHEMA.COLUMNS 视图:SELECTTABLE_NAME,COLUMN_NAME,COLUMN_DEFAULTFROMINFORMATION_SCHEMA.COLUMNSWHERETABLE_NAME=......
  • MySQL 中 DATETIME 和 TIMESTAMP 类型的区别是什么?
    在MySQL中,DATETIME和TIMESTAMP都是用于存储日期和时间的类型,但它们有一些关键的区别:1.存储方式和范围DATETIME:存储的日期和时间值是以“年-月-日时:分:秒”的格式表示。存储格式:DATETIME存储的是固定的日期和时间信息,不受时区的影响。范围:DATETIME的值范围为'1000-01-0......
  • 达梦DM.Microsoft.EntityFreameworkCore查询报错invalid cast from DateTime to DateT
    1.问题达梦dotnetefcore的驱动DM.Microsoft.EntityFreameworkCore。如果实体中存在DateTimeOffset类型字段时,查询报错:invalidcastfromDateTimetoDateTimeOffset。Invalidcastfrom'System.DateTime'to'System.DateTimeOffset'System.Convert.DefaultToType(Sy......
  • sql server 2008 r2 展开时报错:参数名:viewInfo ( Microsoft SqlServer Management S
    HR服务器的数据库报了一个不常见的错误,记录下来分享给大伙,如果遇到同样的问题,希望可以得到解决。服务器环境:windowsserver2008(64Bit)数据库版本:SQLserver2008R2错误提示:值不能为空。参数名:viewInfo(Microsoft.SqlServer.Management.SqlStudio.Expl;如下图:  在路径:C:\Us......
  • sqlserver 低版本附加到高版本的库,只剩一个数据文件
    1.新建一个同名的数据库2.选中数据库->右键->属性->选项->兼容性级别->(选中你附加文件的版本)查询mdf版本:DBCCCHECKPRIMARYFILE('C:\ProgramFiles\MicrosoftSQLServer\MSSQL16.MSSQLSERVER\MSSQL\DATA\数据库备份.mdf',2)3.停掉sqlserver服务,将需要附件的mdf文件替换掉......