Gå til innhold

Hjelp til "replacing" av et dato-format.


Anbefalte innlegg

Skrevet

Heisann,

 

Trenger litt hjelp med lite problem jeg har her . Er nybegynner så mine kunnskaper om php/mysql er minimale.

 

Jeg vil har en dato som alltid ser slik ut: 2003-05-08 (altså 0000-00-00) det er defaulten av curdate() funksjonen i mysql.

 

Jeg vil helst få datoen til å vises i dette formatet : 08.05.2003.

-'ene kan jeg replace ved hjelp av str_replace(), men selve datoen er litt verre. Mistenker det for å være et godt sted å bruke pattern replace, preg_replace() ellerno liknende, men syntaksen er alltfor vanskelig for meg å forstå.

 

Har kikket på http://www.php.net/manual/en/function.preg-replace.php men ble ikke noe smartere av den grunn ;)

 

Kikket på denne :

 

<?php

$string = "April 15, 2003";

$pattern = "/(w+) (d+), (d+)/i";

$replacement = "${1}1,$3";

print preg_replace($pattern, $replacement, $string);



/* Output

  ======



April1,2003



*/

?>

 

Har store problemer med å fatte noe som helst av hvordan $pattern og $replacement variablene fungerer i dette eksempelet.

 

 

På forhånd takk ;)

Videoannonse
Annonse
Skrevet

Hvis datoen ligger i en database kan du kan løse dette i SQL-setningen som henter ut fra databasen med

DATE_FORMAT(navnet_på_datofeltet_ditt,'%d.%m.%Y') AS new_date

Skrevet

Får det ikke til å virke.

 

MySQL Spørring:



SELECT DATE_FORMAT(Dato, '%d.%m.%Y')



Feilmelding:

Unknown column 'Dato' in 'field list'

 

Jeg er 100% sikker på at feltet heter Dato

Skrevet

Vel.. select DATE_FORMAT (Dato, "%d.%m.%Y") as fDato from Test vil kanskje funke? Denne vil vel hente alle datoene som er registrert.

Skrevet
Vel.. select DATE_FORMAT (Dato, "%d.%m.%Y") as fDato from Test vil kanskje funke? Denne vil vel hente alle datoene som er registrert.

 

SQL-spørring :

 

select DATE_FORMAT (Dato, "%d.%m.%Y") as fDato from Test LIMIT 0, 30

 

MySQL sa:

 

 

You have an error in your SQL syntax near '(Dato, "%d.%m.%Y") as fDato from Test LIMIT 0, 30' at line 1

Skrevet


$db = mysql_connect("hostname","username","passwd");

mysql_select_db("hjalla",$db);



$dato = mysql_query("SELECT unix_timestamp(Dato) FROM Test where ID = '1' ", $db);





while($row = mysql_fetch_row($dato)) {



 setlocale(LC_TIME, "no_NO");

 $convert_date = strftime("%A %e. %B %Y Klokken: %H:%M",$row[0]);



 $convert_date = ucwords($convert_date);





echo $convert_date;

}

 

Denne gir output format:Mandag 5. Mai 2003 Klokken: 02:48 feks.

Skrevet

Det funker da som bare det her. Hva for versjon MySQL er det du har? Kanskje det er noe rart der.

 

Kanskje du ikke kan ha mellomrom på DATE_FORMAT og første parantesen.

At det burde være DATE_FORMAT(Dato...

 

Jeg har jo laget identisk tabell som du har og jeg har ikke problemer :D

Skrevet
Det funker da som bare det her. Hva for versjon MySQL er det du har? Kanskje det er noe rart der.

 

Kanskje du ikke kan ha mellomrom på DATE_FORMAT og første parantesen.

At det burde være DATE_FORMAT(Dato...

 

Jeg har jo laget identisk tabell som du har og jeg har ikke problemer :D

 

MySQL 3.23.42

 

Men funka strålende uten mellomrom mellom DATE_FORMAT og parantesen ;)

Skrevet

Min kode er egentlig for å få ut dag og måned på norsk.

Det beste er vel om man bare skal ha ut 01.01.2003 å kjøre den i spørringen som beskrevet over....

Skrevet

Funka greit begge løsningene. Det passer meg utmerket egentlig siden jeg prøver å lære meg php og mysql, nå vet jeg hvordan jeg skal gjøre det i sql og hvordan gjøre det i php ;)

Neste tabell skal nok dateres med Timestamp tenker jeg ;)

 

Takk for hjelpa alle sammen ;)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...