从序列号生成date
我有一个客户提供date作为序列号。 他们给了我们一个Excel公式转换序列号到date,但我们使用SQL Server 2008 R2。 我想知道如果有人可以告诉我如何将这些数字转换为SQL Server中的date字段。
Excel公式:
=DATE(1900+INT(F2/1000),1,MOD(F2,1000))
Excel表格:
Serial # (F2 cell) | Date Value --------------------------------- 103078 | 3/19/2003 104077 | 3/17/2004
我需要在T-SQL中的一个语句,将采取数字和计算到正确的date结果。
SELECT DATEADD(DAY, (@F2%1000)-1, LEFT(1900+(@F2/1000),4)+'0101')
从2个示例序列号中生成正确的date。 很显然,用你得到的F2值代替@ F2。
在SQLFiddle上工作 (虽然我不确定如何使variables在那里工作,所以序列号是硬编码的)
尝试这个:
select dateadd(day, @f2 % 1000 - 1, dateadd(year, @f2 / 1000, '1900-1-1'))