23. april 2004 - 21:23
Der er
12 kommentarer og 1 løsning
Formater date format
Hej gutter.. Sidder lige med et formaterings problem, er ikke den store haj i mysql. $insdate = $_POST['uDate']; $insert_sql = "insert into udlan (id, enhednavn, kategori, bestilbruger, bruger, uDate, adate, uTime, Atime, noter, afleveret) values ('".$_POST['enheds_id']."', '".$_POST['enhednavn']."', '".$_POST['kat_id']."', '".$_POST['rekvirent']."', '".$_POST['bruger']."', 'to_date ($insdate, 'DD-MM-YYYY')', '".$_POST['adate']."', '".$_POST['uTime']."', '".$_POST['aTime']."', '".$_POST['comments']."', '".$_POST['afleveret']."')"; Det er linjen: 'to_date ($insdate, 'DD-MM-YYYY')', der ikke virker. Hovede feltet er date og jeg skal formaetere det til DD-MM-YYYY... er der nogen der kan se hvad der er galt :(
Annonceindlæg tema
23. april 2004 - 23:40
#1
Er der nogen grund til at alle de andre felter idfyldes med $_POST[noget], hvor lige netop $insdate er en undtagelse?
24. april 2004 - 14:01
#2
jeg er ik helt med på hvad du mener? Det er jo intet med de andre felter at gøre. Jeg vil bare gerne vide hvordan jeg sætter datoen ind så det står således: DD-MM-YYYY Men jeg ved ik hvordan, nu har jeg prøvet således her. date_format('$insdate','%d-%m-%y') istedet for 'to_date ($insdate, 'DD-MM-YYYY'). Nu står det rigtigt i databasen bortset fra at dato formaetet er YYYY-MM-DDD, lige omvendt :( Håber i kan hjælpe...
24. april 2004 - 14:11
#3
Ah, jeg tror jeg forstår dit problem nu.. MySQL gemmer en dato.. Hvordan det vises skal du fortælle den ved at bruge date_format(..) når du trækker data ud. to_date() oversætter jo fra noget du giver den (DD-MM-YYYY og så en værdi fx. 2002-01-01) til noget mysql kan forstå. Men selve formatteringen (DD-MM-YYYY) gemmes ikke i databasen - den bruger bare en default hvis du ikke beder om andet.
24. april 2004 - 14:14
#4
Jamen hov!!! Skal man ikke definere det, når man laver selve date feltet i databasen?
24. april 2004 - 14:19
#5
Jeg laver date feltet sådan her: CREATE TABLE udlan( udlansnr integer(10) AUTO_INCREMENT primary key, id integer(5), enhednavn char(20), kategori char(20), bestilbruger char(20), bruger char(20), uDate date)); Kan man ikke definere noget her? hvordan formatet skal se ud
24. april 2004 - 14:34
#6
Nej, desværre. Har lige tjekket manualen, der ser ikke ud til at være mulighed for at angive et default format.
24. april 2004 - 16:00
#7
ævvv. Det kan man nemlig i oracle :( Har vi ik andre muligheder???
24. april 2004 - 16:18
#8
jeg plejer enten at bruge date_format(felt,format) .. og så lade format være en constant som er defineret et andet sted - så du kun skal rette eet sted.
25. april 2004 - 14:27
#9
ok. Men jeg har ca. 20 select sætninger, så hvordan laver man en constant i php? Jeg har også flere date felter, som skrives ud i en select sætning. Hvordan gør man det så formatet bliver rigtigt? Jeg er villig til at give flere points :)
25. april 2004 - 14:40
#10
Lidt inspiration 1) Lad php formattere datoen fx. $sql = "SELECT UNIX_TIMESTAMP(dato) FROM .. "; $res = mysql_query($sql) or die(mysql_error()); while($row = mysql_fetch_row($res)) { print "Dato: " . myformat($row[0]) . "<br>"; } function myFormat($timestmap) { return date("l dS of F Y h:i:s A",$timestamp); } 2) lad mysql $dateformat = '%D %y %a %d %m %b %j' $sql = "SELECT DATE_FORMAT(dato,$dateformat) FROM .."; 3) lad mysql alternativ $sql = 'SELECT ' . sqldate('dato') . ' FROM ..'; function sqldate($field) { return 'DATE_FORMAT('.$field.',\'%D %y %a %d %m %b %j\')'; }
25. april 2004 - 14:42
#11
hov 2) lad mysql define('SQL_DATEFORMAT', '%D %y %a %d %m %b %j'); $sql = "SELECT DATE_FORMAT(dato," . SQL_DATEFORMAT . ") FROM .."; funktionerne og define kan du placeret et fælles sted så du kun definere dem een gang.
28. oktober 2004 - 09:01
#12
dennismp... jeg er ved at lukke alle mine spørgsmål... svarer du lige på denne her :-)
28. oktober 2004 - 16:18
#13
joda
Computerworld tilbyder specialiserede kurser i database-management