Mysql 前天的SQL营业额
我正在阻止一个SQL查询。我希望能在前一天恢复去年的营业额。例如:我们是19年8月13日,我希望去年的营业额是18年8月12日 我该怎么做?这是我的要求:Mysql 前天的SQL营业额,mysql,sql,Mysql,Sql,我正在阻止一个SQL查询。我希望能在前一天恢复去年的营业额。例如:我们是19年8月13日,我希望去年的营业额是18年8月12日 我该怎么做?这是我的要求: SELECT SUM(total_paid/1.2) FROM '._DB_PREFIX_.'orders WHERE o.date_add BETWEEN DATE_FORMAT( CASE WHEN YEAR( DATE_SUB( now(), INTERVAL 36
SELECT SUM(total_paid/1.2)
FROM '._DB_PREFIX_.'orders
WHERE o.date_add BETWEEN DATE_FORMAT(
CASE
WHEN YEAR( DATE_SUB( now(), INTERVAL 364 DAY ) ) = YEAR(now() )
THEN DATE_SUB(concat(YEAR(now()),'-',MONTH(now()),'-01'), INTERVAL 371 DAY)
ELSE DATE_SUB(concat(YEAR(now()),'-',MONTH(now()),'-01'), INTERVAL 364 DAY) END, '%Y/%m/%d') AND
CASE
WHEN YEAR( DATE_SUB( now(), INTERVAL 364 DAY ) ) = YEAR(now() )
THEN DATE_SUB(now(), INTERVAL 371 DAY)
ELSE DATE_SUB(now(), INTERVAL 364 DAY) END
AND valid=1
谢谢您的帮助。您似乎可以将查询简化为以下内容:
SELECT SUM(total_paid/1.2)
FROM '._DB_PREFIX_.'orders
WHERE DATE(o.date_add) = CURDATE() - INTERVAL 1 YEAR - INTERVAL 1 DAY
请注意,根据您对2月29日的处理方式,您可能希望将表达式更改为
CURDATE() - INTERVAL 1 DAY - INTERVAL 1 YEAR
在第一种形式中,2020-02-29将映射到2019-02-27,在第二种形式中,它将映射到2019-02-28。{
从“总计”选项卡中选择“总计”列/1.2
其中now=当您的_date_列出现时的情况,4=0
然后添加日期列,间隔367天
ELSE DATE\u添加您的\u DATE\u列,间隔366天;}
如果您的“日期”列是闰年,则添加367,否则添加366,并与当前日期进行比较。日期添加是什么类型的字段?例如:2018-08-12 10:00:00显示表格!!19年8月13日,是2019年8月13日还是2013年8月19日?或者1913年8月19日?使用适当的ISO 8601日期格式,即YYYY-MM-DD。@ChristopherTRIERWEILER无需担心。我很高兴能帮上忙。