MSSQL:自定义时间转时间戳函数 F_TOUnixTimestamp()

news/2025/11/7 7:39:36/文章来源:https://www.cnblogs.com/samrv/p/19198247

SQL SERVER 2008 版本

做两日期减运算,

使用DATEDIFF( second, '1970-01-01', getdate() )  返回值: 最大2的31次的整数,

当日期getdate()>= 2037-01-19 时函数溢出报错,在指定平台环境下如何 解决日期getdate()>= 2037-01-19 返回时间戳?

在SQL SERVER 2016以及更高版本里有DATEDIFF_BIG() 函数, 此函数可以解决。但在 SQL SERVER 2008 版本里 没有 DATEDIFF_BIG() 函数,

解决 超过68年的BUG,在自定义函数里通过WHILE循环多次使用 DATEDIFF() 处理,具体函数代码:

IF OBJECT_ID('F_toUnixTimestamp')>0 
drop FUNCTION F_toUnixTimestamp;
GO 
CREATE FUNCTION F_toUnixTimestamp(@DATETIME DATETIME ) 
RETURNS BIGINT AS BEGIN
-- 参数: @datetime :是北京时间的日期时间格式
-- 输出结果将是一个长整型数字,表示从1970年1月1日到指定日期的秒数(UTC时间)。
-- 返回: UTC 时间戳(10位整数型)declare @result bigint, @result1 bigint,  @result2  bigint;declare @initial_datetime datetime2  ;declare @datetime2 datetime2 , @startdatetime datetime2 ;declare @mod bigint , @year bigint, @initial_year bigint ;declare @i bigint , @times bigint, @max bigint; -- declare @datetime datetime;-- set @datetime = CONVERT(DATETIME2,'2108-01-01 00:00:00.0000' ,121);-- set @datetime2 = CONVERT(DATETIME2,'2038-01-01 00:00:00.0000' ,121);set @initial_datetime = CONVERT(DATETIME2,'1970-01-01 00:00:00.0000' ,121);-- select @RESULT = DATEDIFF( second, @initial_datetime , @DATETIME) - 28800 ; set @year = DATEPART(year, @datetime ) ;set @i = 1 ;set @result2 = 0;set @result1 = 0;set @result = 0; select  @times = (@year - 1970 )/ 68 , @max = ceiling((@year - 1970 )/ 68.0 );-- print ' @times =' + str(@times ) + ' @max = '+str(@max) while @i<@max  begin-- 4354790400 if @i<=@timesbeginset @datetime2 =  DATEADD(year,68* (@i+1) , @initial_datetime  )  ;set @result1 = DATEDIFF( second,  DATEADD(year,68* (@i) , @initial_datetime  ) , @DATETIME2) ;--  print '@result1_i= ' +str(@result1);set @result2 = @result2 + @result1 ;end;if @i=@times and @i<@max beginset @datetime2 =  @datetime ; --DATEADD(year,68* (@i) , @initial_datetime  )  ;set @result1 = DATEDIFF( second,  DATEADD(year,68* (@i) , @initial_datetime  ) , @DATETIME2) ;--  print '@result1_2= ' +str(@result1);set @result2 = @result2 + @result1 ;--  print '@result2_2= ' +str(@result2);end;		 set @i = @i+1;-- SET @result2 = @result2 + @result1 ;-- print ' @times =' + str(@times ) + ' ; @max = '+str(@max)  + ' ;@i = ' + cast(@i as nvarchar(10))end; if  @times = 0 select @RESULT = DATEDIFF( second, @initial_datetime , @DATETIME) - 28800 ; elseset @result = @result2  - 28800 ; return @result ;--  print '@result= ' + cast ( @result as nvarchar(200));
END; SELECT [dbo].[F_toUnixTimestamp64]( '2258-01-01 00:20:00')  AS toUnixTimestamp64 ,[dbo].[F_toUnixTimestamp]( '2258-01-01 00:20:00')  AS toUnixTimestamp

  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/958285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

职场人高效录屏与剪辑指南:OBS+QuickTime实用搭配

职场人高效录屏与剪辑指南:OBS+QuickTime实用搭配2025-11-07 07:36 AlfredZhao 阅读(0) 评论(0) 收藏 举报工作需要录制Demo视频,其实MAC系统自带的 QuickTime Player 本身也是支持录制的,操作也非常简单,但是…

dotnet 读 WPF 源代码 学习使用 Microsoft.DotNet.Arcade.Sdk 处理代码里的多语言

在 WPF 开源代码里面,可以看到是从各个项目的 Strings.resx 和对应的 xlf 文件,生成对应项目的多语言程序集。这里的多语言程序集可用于抛出异常时,给出本地化的消息提示在 dotnet 庞大的生态集里,打包工具链是开源…

【GitHub每日速递 20251107】DeepCode来袭!多代理系统革新代码生成,多项指标吊打同行!

原文: https://mp.weixin.qq.com/s/ThXD6_zC3hb1OBwXjXOQiA DeepCode来袭!多代理系统革新代码生成,多项指标吊打同行! DeepCode 是一个 实现开放性智能体编程的 工具。简单讲,它能将论文转成代码、文本转成网页或后…

最近100天的仓位的折线图

最高到过118,最低到98,这种波动,还是比较舒服的。关于融资、港股通,算是找到一种比较合理的方案。

一类树哈希方法

一类树哈希方法 记 \(s(x)\) 表示子树 \(x\) 的哈希值(对 \(2^{64}\) 取模),则: \[s(x)=1+\sum _{v\in son_x} f(s(v)) \]其中 \(f\) 是整数到整数的映射,可以使用 Xor Shift,可以在 Xor Shift 异或一个固定的随…

HDU-6806:非 DP 做法

这很诡异你知道吗(有时间可能会把 DP 做法补上)vjudge 链接 点开题目看困了先睡了一觉。 睡醒了阅读一遍题目以为是组合数学吓哭了跑去看别的题了。 回来了之后一秒看出来是 DP,然后花了十五分钟推了个错误的式子,…

[WindowsXP] Windows XP Source Code Just Leaked on 4chan

https://web.archive.org/web/20200925050618/https://www.gizmodo.com.au/2020/09/looks-like-the-windows-xp-source-code-just-leaked-on-4chan/Looks Like the Windows XP Source Code Just Leaked on 4chanShareC…

PHP 开发中 你可能不知道的非常好用 PhpStorm 插件

PHP 开发中 你可能不知道的非常好用 PhpStorm 插件 PhpStorm 作为 PHP 开发者最常用的 IDE 之一,除了强大的内置功能外,还有一个丰富的插件生态系统。这些插件能带来新的语言支持、工具集成,以及各种提升日常编码效率的…

张江之后,上海下一个科创高地正在崛起!

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 354695541004908710月28日,位于莘庄工业区的上海阿尔斯通交通电气有限公司(SATEE)…

2025年11月岗亭定制厂家推荐榜:全国连锁模块化空间解决方案服务商法利莱深度解析

随着城市化进程加快和临时空间需求增长,岗亭定制市场呈现多元化发展趋势。用户在选择岗亭定制厂家时,往往面临服务质量参差不齐、交付周期不稳定、售后保障不完善等痛点。本文基于国家建筑工业标准及第三方调研数据,…

2025年11月北京离婚离婚律所推荐评测:多维指标客观评估报告

当面临婚姻关系破裂需要寻求法律帮助时,选择一家专业可靠的离婚律师事务所成为许多北京市民的重要需求。根据北京市司法局最新统计数据,2025年北京市婚姻家事案件数量呈现稳步增长趋势,其中离婚诉讼案件占比达到家事…

2025年11月连锁酒店加盟品牌推荐榜单:权威分析五大品牌投资价值与选择指南

作为酒店行业投资者或创业者,您可能正在寻找一个具备市场竞争力、投资回报稳健且拥有成熟运营体系的连锁酒店加盟品牌。随着国内旅游市场逐步复苏,中高端酒店加盟领域呈现出品牌化、精细化的发展趋势,投资者往往面临…

2025年11月天津网站建设公司排行推荐:针对不同企业需求的深度分析

在数字化转型浪潮中,企业网站已成为品牌展示、客户触达和业务转化的重要载体。对于天津地区的企业主而言,选择一家可靠的网站建设公司不仅关乎线上形象塑造,更直接影响营销效果和运营效率。本文基于国家相关部门发布…

2025年11月岗亭定制厂家推荐评价:从资质认证到案例实践的全景分析

作为临时建筑领域的重要需求方,企业采购负责人、工程项目管理者或政府采购专员在选择岗亭定制厂家时,往往面临信息不对称、质量参差不齐、交付周期不稳定等实际问题。这类用户通常需要快速部署、安全可靠且具备个性化…

2025年11月全屋定制品牌客观评价:基于用户反馈与行业数据

全屋定制作为家居行业的重要分支,近年来受到越来越多消费者的关注。选择全屋定制品牌的用户可能是正在装修新房的家庭,或是希望改造现有居住空间的业主。他们通常需要兼顾美观性、实用性和性价比,同时面临定制周期长…

2025年11月AI搜索优化推荐榜单:五家优质服务商全面对比

“到底该把预算交给谁,才能在豆包、DeepSeek、通义千问里同时拿到稳定排名?”过去三个月,我接到过二十七次类似求助,来电者大多是市场负责人,他们面临同一道选择题:AI搜索流量开始瓜分传统搜索份额,公司却找不到…

2025年11月AI搜索优化推荐榜:五强对比评测与选型指南

【引言与现状】 当市场部把“本季度必须拿下AI搜索首屏”写进KPI,很多负责人第一次发现:传统SEO的套路在DeepSeek、豆包、通义千问、元宝、Kimi等生成式引擎里几乎失灵。品牌词被AI答成竞品、新品发布48小时内搜不到…

2025年11月AI搜索营销推荐榜单:从资质到效果的可验证指南

引言与现状分析 当市场负责人把“AI搜索营销”写进季度OKR时,通常面对三重焦虑:预算有限、平台算法三天一变、服务商宣传难辨真假。2025年Q1工信部《生成式搜索流量分布报告》显示,DeepSeek、豆包、通义千问三家已占…

2025年11月ai搜索排名优化推荐:实测评价榜揭晓五强服务商

“预算批了,却怕踩坑”——这是不少市场负责人在面对ai搜索排名优化服务时的真实心声。生成式引擎每天新增数千万条内容,DeepSeek、豆包、通义千问、元宝、Kimi的算法各自迭代,品牌词今天还在首页,明天就可能被新内…