Avatar billede dmg Nybegynder
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 :(
Avatar billede dennismp Nybegynder
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?
Avatar billede dmg Nybegynder
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...
Avatar billede dennismp Nybegynder
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.
Avatar billede dmg Nybegynder
24. april 2004 - 14:14 #4
Jamen hov!!!

Skal man ikke definere det, når man laver selve date feltet i databasen?
Avatar billede dmg Nybegynder
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
Avatar billede dennismp Nybegynder
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.
Avatar billede dmg Nybegynder
24. april 2004 - 16:00 #7
ævvv. Det kan man nemlig i oracle :(

Har vi ik andre
muligheder???
Avatar billede dennismp Nybegynder
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.
Avatar billede dmg Nybegynder
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 :)
Avatar billede dennismp Nybegynder
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\')';
}
Avatar billede dennismp Nybegynder
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.
Avatar billede dmg Nybegynder
28. oktober 2004 - 09:01 #12
dennismp... jeg er ved at lukke alle mine spørgsmål... svarer du lige på denne her :-)
Avatar billede dennismp Nybegynder
28. oktober 2004 - 16:18 #13
joda
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
Computerworld tilbyder specialiserede kurser i database-management

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