2017-08-04 10 views
2

したがって、今月と最後の6日にも素材の消費量を表示する必要があります。私は "MM/YY"のようなそれぞれの月のカラムにエイリアス名を入れようとしています。 文字列から日付や時刻を変換すると変換に失敗しましたか?

 
Example of the columns: 08/17 | 07/17 | 06/17 | ... | 02/17 

DECLARE @mes_atual DATE; SET @mes_atual = CAST(FORMAT(GETDATE(),'MM/YY') AS DATE) 
    DECLARE @mes1 DATE; SET @mes1 = DATEADD(MM, -1, @mes_atual); SET @mes1 = CAST(@mes1 AS VARCHAR) 
    DECLARE @mes2 DATE; SET @mes2 = DATEADD(MM, -2, @mes_atual); SET @mes2 = CAST(@mes2 AS VARCHAR) 
    DECLARE @mes3 DATE; SET @mes3 = DATEADD(MM, -3, @mes_atual); SET @mes3 = CAST(@mes3 AS VARCHAR) 
    DECLARE @mes4 DATE; SET @mes4 = DATEADD(MM, -4, @mes_atual); SET @mes4 = CAST(@mes4 AS VARCHAR) 
    DECLARE @mes5 DATE; SET @mes5 = DATEADD(MM, -5, @mes_atual); SET @mes5 = CAST(@mes5 AS VARCHAR) 
    DECLARE @mes6 DATE; SET @mes6 = DATEADD(MM, -6, @mes_atual); SET @mes6 = CAST(@mes6 AS VARCHAR) 
    SET @mes_atual = CAST(@mes_atual AS VARCHAR) 
    DECLARE @query VARCHAR; 
    DECLARE @selects VARCHAR; 

    SET @selects = 'QT_CONS_MES_ATUAL AS [' + CAST(@mes_atual AS VARCHAR) + '], QT_CONS_MES_1 AS [' + CAST(@mes1 AS VARCHAR) + '], QT_CONS_MES_2 AS [' + CAST(@mes2 AS VARCHAR) + '], QT_CONS_MES_3 AS [' + CAST(@mes3 AS VARCHAR) + '], QT_CONS_MES_4 AS [' + CAST(@mes4 AS VARCHAR) + '], QT_CONS_MES_5 AS [' + CAST(@mes5 AS VARCHAR) + '], QT_CONS_MES_6 AS [' + CAST(@mes6 AS VARCHAR) + ']' 

    SET @query = 'SELECT [VERSAO] 
      ,[IN_TP_DISP] 
      ,[CD_OWNER] 
      ,[DS_OWNER] 
      ,[OP_ITEM_PROD] 
      ,[DS_PRODUTO] 
      ,[CD_MAT_GRUPO] 
      ,[CD_MAT_SUBGRUPO] 
      ,[CD_MAT_CLASSE] 
      ,[CD_MAT_NIVEL4] 
      ,[CD_MAT_NIVEL5] 
      ,[CD_UNMED_EST] 
      ,[CD_DIVISAO] 
      ,[IN_CTR_DISP] 
      ,[IN_TIPO_REPOS] 
      ,[QT_ETQ_MAXIMO] 
      ,[QT_ETQ_MINIMO] 
      ,[QT_LOTE_COMPRA] 
      ,[QT_SALDO_ATUAL] 
      ,[VL_SALDO_ATUAL] 
      ,[QT_SALDO_RES] 
      ,[QT_SALDO_ENC] 
      ,[QT_SALDO_DISP] 
      ,'[email protected]+' 
      ,[SQ_MOVTO] 
      ,[QT_SALDO_CUR] 
      ,[QT_SALDO_BENTO] 
      ,[QT_SALDO_BAURU] 
      ,[CD_FOR_ITEM] 
      ,[VL_CUSTO_ULT_COMPRA] 
      ,[CD_PESSOA_FORN] 
      ,[NOME_FORN] 
      ,[AN_NFE] 
      ,[DT_ENTRADA] 
      ,[AN_PC] 
     FROM [dbo].[VW_SQL_CONSUMO_BI]' 

    EXEC(@query) 

私はVARCHARデータに日付を変換するとき、私は、クエリを構築し、私はエラーを取得し、それをexecし、動の日付で一部の列のエイリアス名を入れしようとしているが、よ:

Mensagem 241, Nível 16, Estado 1, Linha 3 
Conversion failed when converting date and/or time from character string. 

Ps:エラーメッセージはポルトガル語ですが、私はあなたが私を助けることができると思います。

+0

を返し

DECLARE @mes_atual DATE SET @mes_atual = GetDate() select @mes_atual as mes_atual, FORMAT(@mes_atual,'MM/yy') AS date 

年と月を示して?質問に関連するタグのみを使用してください – hardillb

+0

申し訳ありません! –

答えて

0

をレンダリングしますトン日 せずに有効な日付を作成するだけそうにあなたの変数と使用フォーマットでのGetDateを入れて、これはそれ、MySQLやSQLサーバである

mes_atual date  
2017-08-04 08/17 
+0

うん!それはうまくいった!ありがとうたくさんの仲間 –

+0

私は助けることができて嬉しい問題はありません – GuidoG

2

問題は、一番上の変数です。月と年はどのようにして日付になれますか?あなたは1日が必要です。その愚かなキャスト/フォーマットのものを取り除き、getdateにあなたの日付を設定してください。

DECLARE @mes_atual DATE; SET @mes_atual = GETDATE() 

select @mes_atual 
0

日付に変換しないでください。書式設定を使用して、必要なものを入手してください。

お知らせyylowercase

Select FORMAT(@mes_atual,'MM/yy')

DECLARE @mes_atual DATE; SET @mes_atual = GETDATE() 
Select @mes_atual 
Select FORMAT(@mes_atual,'MM/yy') 

では、あなたがcanno

2017-08-04

08/17

関連する問題