Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh mengumpulkan Data SQL mengikut Bulan dan Tahun dalam Format 'Bulan-Tahun' Tersuai?

Bagaimanakah saya boleh mengumpulkan Data SQL mengikut Bulan dan Tahun dalam Format 'Bulan-Tahun' Tersuai?

Susan Sarandon
Susan Sarandonasal
2024-12-29 00:30:10297semak imbas

How Can I Group SQL Data by Month and Year in a Custom

Pengumpulan SQL mengikut Bulan dan Tahun dalam Format Tersuai

Apabila bekerja dengan cap masa dalam SQL, ia boleh berguna untuk mengumpulkan data mengikut khusus selang waktu, seperti bulan atau tahun. Walau bagaimanapun, format lalai untuk jenis data DATE atau TIMESTAMP mungkin tidak sentiasa sejajar dengan pembentangan yang diingini. Dalam hal ini, cabaran biasa adalah untuk memaparkan tarikh dalam format tersuai, seperti "bulan-tahun".

Pertimbangkan pertanyaan SQL berikut:

SELECT MONTH(date) + '.' + YEAR(date) AS Mjesec,
       SUM(marketingExpense) AS SumaMarketing,
       SUM(revenue) AS SumaZarada 
FROM [Order]
WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
GROUP BY MONTH(date), YEAR(date)

Pertanyaan ini mengumpulkan data mengikut bulan dan tahun dan memaparkan jumlah agregat untuk perbelanjaan pemasaran dan hasil. Walau bagaimanapun, lajur pertama, "Mjesec," pada masa ini hanya menunjukkan bulan, cth., "9". Untuk mengubah suai output untuk memaparkan "bulan-tahun", gabungan pemutus dan penyambungan rentetan diperlukan.

Satu pendekatan melibatkan menghantar nilai bulan dan tahun kepada rentetan dan kemudian menggabungkannya secara manual:

SELECT CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) AS Mjesec,
       SUM(marketingExpense) AS SumaMarketing,
       SUM(revenue) AS SumaZarada 
FROM [Order]
WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
GROUP BY CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4))

Ini akan mengeluarkan format "bulan-tahun" yang diingini, cth., "9-2011". Sebagai alternatif, seperti yang dicadangkan oleh 40-Love, pemutus boleh dilakukan dengan sifar pendahuluan, menghasilkan klausa GROUP BY berikut:

GROUP BY 
  CAST(YEAR(date) AS VARCHAR(4)) + '-' + right('00' + CAST(MONTH(date) AS VARCHAR(2)), 2) 

Variasi ini menambah sifar pendahuluan untuk memastikan bulan itu sentiasa dipaparkan sebagai dua -nombor digit.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengumpulkan Data SQL mengikut Bulan dan Tahun dalam Format 'Bulan-Tahun' Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn