0

NUMBERS列と列から月と会計年度の差を計算することを任されていSHIP_DATESます。計算前のNUMBERS列 ( NUMBER_MONTH) と ( )の文字列から日付または時刻を変換するのに問題があります。NUMBER_FY

誰か見てくれませんか?基本的に、私が抱えている問題は、SHIP_DATE_MONTHマイナスNUMBER_MONTHSHIP_DATE_FYマイナスを取ることができないことNUMBER_FYです。

  • NUMBERSvarcharです。としてフォーマットされますSSSYYMMFFFFFF

    • SSS店舗駅です。
    • YYは会計年度、
    • MMは月、
    • FFFFFF周波数です
  • SHIP_DATESdatetimeです。

  • 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.

注意してください、これはdatetimeアプローチへの変換ですが、私はまだそれを機能させる方法を理解していません:

CONVERT(VARCHAR , SHIP_DATES , 101 ) AS 'MM/DD/YYYY'
4

3 に答える 3

0

なぜこれをしないのですか?

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  CAST('20' + SUBSTRING(NUMBERS, 6, 2) + '-' + SUBSTRING(NUMBERS, 4, 2) + '-01'     AS DATE) AS NumsDate,
SHIP_DATES
INTO #TEMP2      
FROM #TEMP

SELECT 
    DATEDIFF(M, NumsDate, SHIP_DATES) AS Diff_In_Months,
    DATEDIFF(YEAR, NumsDate, SHIP_DATES) AS Diff_In_Years  
FROM 
    #TEMP2
于 2013-09-10T18:19:48.900 に答える