我的任务是计算一NUMBERS
列和一SHIP_DATES
列的月份和财政年度的差异。在计算之前,我无法从 ( ) 和 ( )NUMBERS
列中的字符串转换日期或时间。NUMBER_MONTH
NUMBER_FY
有人可以看看吗?基本上,我遇到的问题是我不能接受SHIP_DATE_MONTH
减号NUMBER_MONTH
和SHIP_DATE_FY
减号NUMBER_FY
。
列
NUMBERS
是varchar
。它的格式为SSSYYMMFFFFFF
,其中SSS
是商店站,YY
是会计年度,MM
是月份,并且FFFFFF
是频率
列
SHIP_DATES
是datetime
。列
ID
是 int。
这是我的代码:
CREATE TABLE #TEMP
(
NUMBERS VARCHAR (20),
SHIP_DATES DATETIME,
ID INT
)
INSERT INTO #TEMP VALUES ( 'ABC1006000046' , '6/5/2010' , '123' )
INSERT INTO #TEMP VALUES ( 'ABC1006000046' , '7/15/2013' , '123' )
INSERT INTO #TEMP VALUES ( 'CDS0809000059' , '9/8/2008' , '124' )
INSERT INTO #TEMP VALUES ( 'CDS0809000059' , '1/31/2013' , '124' )
SELECT SUBSTRING(NUMBERS, 6, 2) AS NUMBER_MONTH,
SUBSTRING(NUMBERS, 4, 2) AS NUMBER_FY,
DATEPART (MONTH, SHIP_DATES) AS SHIP_DATE_MONTH,
DATEPART (YEAR, SHIP_DATES) AS SHIP_DATE_FY,
ID
INTO #TEMP1
FROM #TEMP
--calculate the difference in month and fiscal year
SELECT DATEDIFF( YEAR , NUMBER_FY , SHIP_DATE_FY ) AS DIFF_YEAR ,
DATEDIFF( MONTH , NUMBER_MONTH , SHIP_DATE_MONTH ) AS DIFF_MONTH ,
ID
FROM #TEMP1
这是我收到的错误消息:
Conversion failed when converting date and/or time from character string.
请注意,这是一种转换为日期时间的方法,但我还没有弄清楚如何使它工作:
CONVERT(VARCHAR , SHIP_DATES , 101 ) AS 'MM/DD/YYYY'