如何在 SQL 服务器中将整数日期(5 位)格式化为 yyyy-mm-dd?

How to format an integer date (5 digits) to yyyy-mm-dd in SQL Server?

我有一个包含名为 fSystemDate、fOpenned、fStatusDate 等整数字段(列)的数据库...我认为它们代表日期,但我不知道它们的格式。这些字段中的值是这样的:76505、76530、76554、76563。 我没有与它们相关联的真实日期的示例。

已解决。查看答案。

只给一个数字很难帮你。看起来你的日期是某种序列号。但没有任何其他数据点

  • 纪元。纪元是历法的零点。

  • increment.序列号中的tick有多大? 1天? 1小时1分钟?一周?一个月?

  • source hardware/operating system. 该值来自哪个计算机系统?不同的系统以不同的方式表示日期,使用具有不同纪元的不同历法系统。

  • 源软件系统。什么软件创造了价值?是定制软件吗?它用什么语言写的?什么时候?数据的后备存储是什么?数据库、文件系统等可能都有自己的内部日期表示。

  • 代表的值。如果76563确实是一个日期的代表,它代表什么日期?或者至少,它代表最近的日期吗?过去的约会?未来的某个日期?

无法回答您的问题。此页面可能对您有所帮助:

http://www.itworld.com/article/2823335/data-center/128452-Just-dating-The-stories-behind-12-computer-system-reference-dates.html

它列出了不同计算机系统的一些常见纪元:

编辑说明:这里有一个数据点:1800 年 1 月 1 日加上 76,563 天得到日期 16 August 2009

我发现这种格式是一种名为 Clarion 的编程语言的一部分,他的日期编号从 28-December-1800 开始。 我可以通过两种方式将 clarion 数据转换为 sql 日期:

  1. SELECT DATEADD(day, 76505, '28-12-1800')

    结果为 2010-06-15 00:00:00.

  2. SELECT CONVERT(DateTime,76505 - 36163)

    结果相同。 36163这个数字用来调整一个SQL。这是 1900 年 1 月 1 日(MSSQL 日期时间编号开始)和 1800 年 12 月 28 日(Clarion 日期时间编号开始)之间的天数。

我的结果是正确的,因为我向他们(我的客户)询问了您应用程序中的数据示例并比较了信息。