【发布时间】:2010-04-22 15:52:41
【问题描述】:
我正在使用一个现有数据库,其中所有日期都以以下格式存储为整数:yyyy[3 digit day of year]。
例如:
2010-01-01 == 2010001
2010-12-31 == 2010365
我正在使用以下 SQL 转换为日期时间:
DATEADD(d,
CAST(SUBSTRING(
CAST(NEW_BIZ_OBS_DATE AS VARCHAR), 5, LEN(NEW_BIZ_OBS_DATE) - 4
) AS INT) - 1,
CAST('1/1/' + SUBSTRING(CAST(NEW_BIZ_OBS_DATE AS VARCHAR),1,4) AS DATETIME))
有没有人有更简洁的方法来做到这一点?
【问题讨论】:
-
这种格式有名字吗?还是比 yyyy[3 digit day of year] 更好的引用方式?
-
@Seth Reno:我还以为叫朱利安格式,结果不对。
-
您可以使用视图、添加计算列或引入过程来处理转换吗?抽象掉丑陋的转换机制,让未来变得非常简洁......
-
@Seth:朱利安日期格式:en.wikipedia.org/wiki/Calendar_date#Day_and_year_only
-
@OMG Ponies:你为什么说朱利安不正确?
标签: sql sql-server datetime