我正在尝试从具有YYYY-MM-DD的日期列中按年和月排序。
下面是我的代码示例:
SELECT * FROM (
SELECT CONCAT(YEAR([DATE]), '-', MONTH([DATE])) AS 'YM' FROM randomTable WHERE [DATE] IS NOT NULL
)sub1
GROUP BY sub1.YM
ORDER BY SUB1.YM asc
这不太奏效,但是已经接近了,我知道了
2017-11
2018-10
2018-11
2018-12
2018-3
2018-4
2018-5
2018-6
2018-8
2018-9
2019-1
2019-10
2019-11
2019-2
2019-3
2019-4
2019-5
2019-6
2019-7
2019-8
2019-9
问题是2019-10 2019-11
和2018-10 2018-11 2018-12
。我怎样才能使这项工作正确排序?
答案 0 :(得分:0)
如何保留[DATE]
并将其用于排序?
SELECT sub1.YM
FROM (SELECT CONCAT(YEAR([DATE]), '-', MONTH([DATE])) AS YM, [DATE]
FROM randomTable
WHERE [DATE] IS NOT NULL
) sub1
GROUP BY sub1.YM
ORDER BY MIN([DATE]);
答案 1 :(得分:0)
这是因为YM是文本,并且字母“ 2019-10”在“ 2019-2”之前。
但这很容易解决。
SELECT sub1.YM
FROM (
SELECT FORMAT([DATE],'yyyy-MM') AS [YM]
FROM randomTable
WHERE [DATE] IS NOT NULL
) sub1
GROUP BY sub1.YM
ORDER BY sub1.YM asc
然后是'2019-02'之后的'2019-10'
顺便说一句,此查询可以缩短。
SELECT FORMAT([DATE],'yyyy-MM') AS [YM]
FROM randomTable
WHERE [DATE] IS NOT NULL
GROUP BY FORMAT([DATE],'yyyy-MM')
ORDER BY [YM]
答案 2 :(得分:0)
这是您要找的东西:
public function store(ComprobanteIngresoFormRequest $request, $copropietario_id){
$ingresos= new ComprobanteIngreso;
$ingresos->cliente_id=$request->get('cliente_id');
$ingresos->copropietario_id=$request->get('copropietario_id');
$ingresos->fecha=$request->get('fecha');
$ingresos->formapago=$request->get('formapago');
$ingresos->monto=$request->get('monto');
$ingresos->fondos=$request->get('fondos');
$ingresos->nulo=$request->get('nulo');
$ingresos->descripcion=$request->get('descripcion');
$ingresos->cheque=$request->get('cheque');
$ingresos->banco=$request->get('banco');
$ingresos->deuda=$request->get('deuda');
$ingresos->save();
$morosos= Morosos::findOrFail($copropietario_id);
$morosos->montopago = $request->get('monto');
$morosos->totalmoroso = $request->get('deuda');
$morosos->save();
return Redirect::to('admin/ingresos');
}