【发布时间】:2015-07-08 01:20:40
【问题描述】:
我在网上看到了很多例子,在 SO 上也看到了一些例子。但是,似乎没有一个适用于我的数据。以下是一些儒略日期及其已知转换值。
JUL | DateTime
2454522 | 2008-02-25 00:00:00.000
2454571 | 2008-04-14 00:00:00.000
2455713 | 2011-05-31 00:00:00.000
我试过这个不起作用:
DECLARE @JD int = 2454522
SELECT DATEADD(YEAR, @JD / 1000 - 1900, @JD % 1000 - 1)
它给了我这个:2455-06-06 00:00:00.000 这显然是错误的。我在这里想念什么?提前致谢。
【问题讨论】:
-
这适用于哪个 RDBMS?
-
儒略日期和 YMD 之间的转换并不是那么简单。请参阅 en.wikipedia.org/wiki/Julian_day 以获取解释和计算彼此之间的算法。
-
@DavidAldridge:鉴于使用
@表示变量名,它看起来像SQLServer。 -
@David 对不起,对于 SQL
-
BBauer42:SQL(结构化查询语言的缩写)是一种用于操作关系数据库管理系统(简称 RDBMS)中保存的数据的语言。有许多 RDBMS(如 Oracle、MySQL、Microsoft SQLServer、PostgreSQL 等),每个都有自己的 SQL 版本。 David 询问使用了其中的哪一个 - 这很重要,因为 SQL 的每种方言都倾向于有自己的处理日期的方式,与其他方言不同。我推断您使用的是 SQLServer - 您能否确认这是否属实,如果不是,您使用的是哪个版本的 SQL?