Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
间隔';0-0';MySQL上的年/月?_Mysql_Yearmonth - Fatal编程技术网

间隔';0-0';MySQL上的年/月?

间隔';0-0';MySQL上的年/月?,mysql,yearmonth,Mysql,Yearmonth,我试图理解一个MySQL存储过程,但我不理解年\月的用法。 什么是间隔“0-0”年\月和间隔“0-4”年\月? 它是用来做什么的 对存储过程的查询如下所示: SELECT remunerations.id_princ, remunerations.id_cont, customer.t_contraco, remunerations.id_ct, ABS(SUM(remunerations.item1)) AS item1,

我试图理解一个MySQL存储过程,但我不理解
年\月
的用法。 什么是
间隔“0-0”
年\月和
间隔“0-4”年\月
? 它是用来做什么的

对存储过程的查询如下所示:

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;

这是迄今为止的一个论据。看看这个论据,它说:

请参阅日期添加()的说明

报告说:

日期添加(日期,间隔扩展单位),日期子(日期,间隔扩展单位)


你的单位是年-月,因此根据链接,表达式是要减去的年数和月数,以“-”分隔。

这是迄今为止的一个参数。查看用于此的参数,它表示:

请参阅日期添加()的说明

报告说:

日期添加(日期,间隔扩展单位),日期子(日期,间隔扩展单位)


您的单位是年\月,因此根据链接,表达式是要减去的年数和月数,以“-”分隔。它似乎用于将值转换为日期数据类型:

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

这绝对是一个文本。添加
0
literaly不会更改值,隐式转换除外。实际上,它与:

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

它似乎用于将值转换为最新数据类型:

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

这绝对是一个文本。添加
0
literaly不会更改值,隐式转换除外。实际上,它与:

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

基本上,SQL中使用DATE_SUB()函数从日期中减去时间/日期间隔,然后返回日期

所以这个
date\u sub(现在(),间隔“0-4”年\u月)
意味着

date_sub - function to subtract    
NOW() -  would be the current DATE and TIME
INTERVAL - value to be added or subtracted
'0-4' - corresponds to YEAR=0 & MONTH=4
因此,您可以将表达式理解为从当前日期和时间减去4个月

您可以在一个简单的查询中检查这一点

此外,还请检查此官方文档

基本上,SQL中使用DATE_SUB()函数从日期中减去时间/日期间隔,然后返回日期

所以这个
date\u sub(现在(),间隔“0-4”年\u月)
意味着

date_sub - function to subtract    
NOW() -  would be the current DATE and TIME
INTERVAL - value to be added or subtracted
'0-4' - corresponds to YEAR=0 & MONTH=4
因此,您可以将表达式理解为从当前日期和时间减去4个月

您可以在一个简单的查询中检查这一点

此外,还请检查此官方剂量文件