Avatar billede jjdk Nybegynder
27. juli 2006 - 22:20 Der er 12 kommentarer og
1 løsning

Er dato i Mysql større end dags dato

Her derude.
Jeg har en DB med 3 felter:
1. dato (2 tegn)
2. maaned (2 tegn)
3. aar (4 tegn)
Jeg har brug for at sætte disse 3 felter sammen til en dato, som jeg kan sammenligne dagsdato med.

if (sammensatdato fra MySQL) > dagsdato {
print "blabla";
} else {
print "bla bla";
}

En der vil hjælpe med koden til sammensætning af datoen og sammenligningen med dagsdato.
Avatar billede hmortensen Nybegynder
27. juli 2006 - 22:25 #1
Jeg ville rette det til et DATE felt i tabellen, så ville du kunne lave det i dit udtræk på flg. måde:
SELECT * FROM tabel WHERE dato > NOW()
Avatar billede jjdk Nybegynder
27. juli 2006 - 22:36 #2
Det er ikke lige så nemt, da der er lavet en hel del kode, der anvender de eksisterende felter. Derfor foretrækker jeg en løsning, hvor de 3 felter sættes sammen til en dato osv.
Avatar billede pidgeot Nybegynder
27. juli 2006 - 22:40 #3
Lidt fusk:

if ($aar.$maaned.$dag>date("Ymd")) {
print "større end";
} else {
print "mindre end el. lig med";
}

Det kræver dog at måned og dag ALTID er på det "fulde" antal cifre, dvs. med foranstillede nuller. Er de ikke det, SKAL du ordne dette inden du sammenligner.

Det kan dog kraftigt tilrådes at gå over til DATE og omskrive resten.
Avatar billede jjdk Nybegynder
27. juli 2006 - 22:52 #4
Dato og måned felterne er desværre ikke med foranstillede nuller. Andre forslag??
Avatar billede erikjacobsen Ekspert
27. juli 2006 - 22:52 #5
Og knap så meget fusk:

if ( sprintf("%4d%02d%02d",$aar,$maaned,$dag)>date("Ymd")) {
print "større end";
} else {
print "mindre end el. lig med";
}
Avatar billede jjdk Nybegynder
27. juli 2006 - 23:22 #6
Så virker det og løsningen var fra Erikjacobsen.
Tusind tak for hjælpen - sender du et svar?
Avatar billede hmortensen Nybegynder
27. juli 2006 - 23:31 #7
Burde ikke være så stort problem at få rettet til date felt.
Avatar billede erikjacobsen Ekspert
27. juli 2006 - 23:32 #8
Nej, jeg samler slet ikke på point. Men jeg bifalder forslaget om at revidere din databasestruktur, så du får et DATE-felt i stedet for. Hellere nu end senere, hvor der blot vil være endnu mere kode, der skal laves. Sådanne "der-blev-jeg-godt-nok-lidt-klogere"-ændringer laver vi allesammen, og der er  endda et navn for det http://en.wikipedia.org/wiki/Refactoring

Eneste grund til ikke at gøre det, kunne være hvis du umiddelbart har brug for de enkelte felter for sig, og de derfor er indexerede.
Avatar billede jjdk Nybegynder
27. juli 2006 - 23:40 #9
Felterne anvendes i et færdigt kalender- og bookingsystem, som jeg har fået ekstern hjælp til. Lige nu er der ca. 5000 kodelinjer og det er helt uoverskueligt for mig, at lave om på datoregistreringen. Jeg er blot i gang med nogle få valideringer og kontroller af indtastninger.
Avatar billede hmortensen Nybegynder
27. juli 2006 - 23:43 #10
Om ikke andet, fremover benyt da date eller datetime felter.
Avatar billede erikjacobsen Ekspert
27. juli 2006 - 23:52 #11
Så find noget andet ekstern hjælp en anden gang ;)
Avatar billede jjdk Nybegynder
28. juli 2006 - 00:02 #12
Han har nu været en stor hjælp og meget billig - og I har været endnu billigere;)
Avatar billede jjdk Nybegynder
30. juli 2006 - 13:47 #13
Jeg lukker og slukker....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester