将5位数字转换为日期

7

非常抱歉,因为我相信这个问题以前已经被问过了,但是我不知道我正在使用的日期类型的名称。

在SQL Server中如何将一个5位数字形式的日期(例如41867)转换成常规的yyyy-dd-mm格式?


3
那么数字41867代表哪个日期? - dotnetom
1
这些时期日期来自Linux吗?41867应该是哪个日期? - Sean Lange
3
看起来像是Excel串行日期——自1900年1月1日以来的天数。还有另一种格式,是由两位数字的年份后面跟着三位数字的日期(例如99001代表1999年1月1日),但是对于这种格式,该帖子中的例子不适用。 - user1864610
2
“41687”是来自Excel并代表日期“2014-08-16”吗?那么,使用SELECT DATEADD(DAY, 41867, '18991230')应该可以实现您的需求。可能需要进行一些转换为DATE的操作。 - Jeroen Mostert
2
根据@benjaminmoskovits的评论,如果起始日期是1900-01-01,那个日期也可能是“2014-08-18”。我只是在Excel中输入了“41867”,并将其显示为日期;结果是“2014-08-16”。这并不完全科学。这就是为什么你需要知道该值来自哪里以及它代表什么。 - Jeroen Mostert
显示剩余8条评论
3个回答

9

SQL Server将日期存储为自1900年1月1日以来的天数,小数部分表示一天的一部分。

declare @d1 datetime

set @d1 = 41867

select @d1

select CONVERT(varchar(20),@d1,120)

如果您想在一条语句中完成该操作:

select CONVERT(varchar(25),cast(41867 as datetime),120)

在我的电脑上,它打印出:2014-04-18 00:00:00。你是否正在运行SQL Server?如果是,它的版本是什么? - benjamin moskovits
请在未来指明这一点。你浪费了很多志愿者的时间。Access和Sql Server是非常不同的产品。 - benjamin moskovits

2

这个5位数字格式被称为msdate,它从1900年1月1日开始计算。将其转换为标准日期最简单的方法是:

select convert(datetime, 44321) - 2 

0
有时候,五位数的数字在Clarion日期时间标准中代表日期时间。起始日期为1800年12月28日。如果您有一些测试数据,您可以将预期值与在线计算器online calculators中的数据进行比较。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接