webForumDet fria alternativet

Plocka ut årtal från mysql date

PHP

7 svar · 688 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Hur löser jag det enklast om jag endast vill plocka ut årtal från formen ÅÅÅÅ-MM-DD?
Likaså OM både årtal + månad finns, hur visar jag det?

(Årtal är obligatoriskt, men om även månaden finns, vill jag även plocka ut den.)
Kanske någon funktion?

Tacksam för all hjälp! :bire

Medlem sedan jan. 2005953 inlägg
#2

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.

Medlem sedan juli 20041 271 inlägg
#3

Well.. när jag lägger till infon i mysql från ett formulär, så är det ok om man endast kan/vill ange årtal + månad. (Dagen blir då sparad som 00.)

Medlem sedan juli 20041 271 inlägg
#4

*bump*

Medlem sedan feb. 20034 441 inlägg
#5

Spara inte dag som "00".. om man inte anger dag, spara den som "01" annars tror jag att det kan bli fel när du ska ta ut värdet och "jobba" med det.

Precis som MetalBoy skrev, om du har 2009-08-24 sparat och ska plocka ut årtal, kör med:

SELECT YEAR(my_year_field) AS ar FROM table
Medlem sedan mars 20007 896 inlägg
#6

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?

Medlem sedan juli 20041 271 inlägg
#7

SPiN skrev:

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?

Infon lagras som DATE (XXXX-MM-DD).

Medlem sedan mars 20007 896 inlägg
#8

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
252 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)