1

MySQL ストアド プロシージャを理解しようとしていますが、の使用法がわかりませんYEAR_MONTH。YEAR_MONTHINTERVAL '0-0'INTERVAL '0-4' YEAR_MONTH? それは何のために使用されますか?

ストアド プロシージャのクエリは次のようになります。

SELECT remunerations.id_princ,
       remunerations.id_cont,
       customer.t_contraco,
       remunerations.id_ct,
       ABS(SUM(remunerations.item1)) AS item1,
       ABS(SUM(remunerations.item2)) AS item2,
       ABS(SUM(remunerations.item3)) AS item3
FROM customer
     RIGHT OUTER JOIN remunerations ON (customer.id_cont = remunerations.id_cont)
     RIGHT OUTER JOIN contractuals ON (remunerations.id_ct = contractuals.id_ct)
WHERE remunerations.id_princ = var_princ AND
      customer.active_cont = 1 AND
      customer.deactive_princ = 1 AND
      DATE_FORMAT(CONCAT(remunerations.anyo_trab, '-', remunerations.mes_trab, '-15'), "%Y-%m-%d") IN ((
              SELECT DATE_SUB(CONCAT(MAX(rm.anyo_trab),'-', MAX(rm.mes_trab),'-15'), INTERVAL '0-0' YEAR_MONTH) AS fecha2
              FROM
                remunerations rm
              WHERE rm.anyo_trab = YEAR (date_sub (NOW(), INTERVAL '0-4' YEAR_MONTH)) AND
                    rm.id_princ = var_princ AND
                    rm.id_cont = remunerations.id_cont
      )) AND
      (remunerations.finiquito_planilla IS NULL OR remunerations.finiquito_planilla >= var_fecha)
GROUP BY remunerations.id_princ,
         remunerations.id_cont,
         customer.elorden,
         remunerations.id_ct;
4

3 に答える 3

1

これは DATE_SUB への引数です。そのためのドキュメントを見ると、次のように書かれています。

DATE_ADD() の説明を参照してください。

そして、そこにあるドキュメントには次のように書かれています:

DATE_ADD(日付,INTERVAL式単位)、DATE_SUB(日付,INTERVAL式式単位)

単位は YEAR_MONTH であるため、リンクされたTemporal Intervalsによると、式は減算する年と月の数であり、「-」で区切られています。

于 2020-12-28T19:57:17.577 に答える
1

値を日付データ型にキャストするために使用されているようです:

SELECT DATE_SUB(CONCAT(MAX(rm.anyo_trab),'-', MAX(rm.mes_trab),'-15'), 
            INTERVAL '0-0' YEAR_MONTH) AS fecha2

として

CONCAT(MAX(rm.anyo_trab),'-', MAX(rm.mes_trab),'-15'

は間違いなくテキストです。リテラルを追加0しても、暗黙的な変換を除いて値は変更されません。事実上、次と同じです。

SELECT CAST(CONCAT(MAX(rm.anyo_trab),'-', MAX(rm.mes_trab),'-15') AS DATE) ...

デシベル<>フィドルのデモ

于 2020-12-28T19:57:24.353 に答える