Plocka ut årtalet kan du göra med YEAR() direkt i SQL-frågan. Det är en inbyggd funktion i MySQL. Vad menar du med om månaden finns? Utan månad är det ju inte ett giltigt datum.
Hur lagras all information? Har du ett fält som datetime i formatet YYYY-MM-DD, eller lagrar du det som en varchar, eller lagrar du år, månad, dag för sig? Hur ser ett fält ut som inte har månad i sig? Hur ser ett fält ut som inte har dag i sig?
Hur lagras all information? Har du ett fält som datetime i formatet YYYY-MM-DD, eller lagrar du det som en varchar, eller lagrar du år, månad, dag för sig? Hur ser ett fält ut som inte har månad i sig? Hur ser ett fält ut som inte har dag i sig?
Kanske går att göra snyggare, men följande bör fungera;
select
if(
cast(date_format(yourDateField, '%m') as unsigned) < 1, /* Om datumet är 00 */
date_format(yourDateField, '%Y'), /* Plocka bara ut årtalet */
date_format(yourDateField, '%Y-%m') /* Annars plockar vi ut både år och datum */
) as formattedDateField
from
dinTabell
250 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9