sparks Skrevet 8. juli 2007 Del Skrevet 8. juli 2007 Jeg har et felt i min mysql-database av typen DATETIME, jeg vil gjerne kunne formateret feltets output, som standard da er "0000-00-00 00:00:00", til f.eks "8 July 2007". Jeg vet det er mulig, men har ikke klart å finne ut av hvor, noen som kan dytte meg i riktig retning? Lenke til kommentar
endrebjo Skrevet 8. juli 2007 Del Skrevet 8. juli 2007 (endret) SELECT DATE_FORMAT('2005-04-01 12:03:34', '%e. %M %Y'); Returnerer: 1. April 2005 Hvis du lærer deg å bruke dokumentasjonen, så finner du omtrent hva du vil. Ihvertfall funksjoner og datatyper. Endret 8. juli 2007 av endrebjorsvik Lenke til kommentar
sparks Skrevet 8. juli 2007 Forfatter Del Skrevet 8. juli 2007 Tusen hjertlig, endrebjorsvik Lenke til kommentar
pgdx Skrevet 9. juli 2007 Del Skrevet 9. juli 2007 Du kan også bruke programmeringsspråket ditt til å gjøre det om, enten til en Java Date eller ved bruk av PHP, whatever suits your needs. Lenke til kommentar
endrebjo Skrevet 9. juli 2007 Del Skrevet 9. juli 2007 (endret) Du kan også bruke programmeringsspråket ditt til å gjøre det om, enten til en Java Date eller ved bruk av PHP, whatever suits your needs. 9040010[/snapback] Det vil kun føre til unødvendig mye kode.Enten må han putte YYYY-MM-DD inn i PHP- eller Java-kode, der det må splittes og tolkes før det kan brukes til datoer. PHP vil vel bli noe ala dette her: Klikk for å se/fjerne innholdet nedenfor $date = '2003-04-23'; $date_array = explode('-', $date); $new_date = date('[datoformatering]', mktime(0,0,0,$date_array[1], $date_array[2], $date_array[0])); Eller så må han sende SELECT UNIX_TIMESTAMP(dato) til PHP eller Java. Også her blir det brukt flere funksjoner enn i DATE_FORMAT(). Først UNIX_TIMESTAMP() og så date(). Klikk for å se/fjerne innholdet nedenfor $data = mysql_query("SELECT UNIX_TIMESTAMP('2003-04-23') AS unix_date"); $date = mysql_fetch_assoc($data); $new_date = date('[datoformatering]', $date['unix_date']); Kanskje jeg skal test litt ytelse i kveld. Edit: Jeg kunne bare ikke dy meg. Ytelsestest kommer her: Klikk for å se/fjerne innholdet nedenfor connect.php PHP <?php $link = mysql_connect('****', '****', '****') or die(mysql_error()); $db = mysql_select_db('endre') or die(mysql_error()); ?> mysql_only.php PHP <?php require('connect.php'); $dato_array = array(); $time_start = microtime(true); $get_data = mysql_query("SELECT DATE_FORMAT(dato, '%e. %M %Y') AS new_date FROM teller"); while ($data = mysql_fetch_assoc($get_data)) { $dato_array[] = $data['new_date']; } $time_end = microtime(true); $time_used = $time_end - $time_start; echo "Brukte {$time_used} sekunder (eller noe sånt) <pre>"; print_r($dato_array); echo '</pre>'; ?> php_only.php PHP <?php require('connect.php'); $dato_array = array(); $time_start = microtime(true); $get_data = mysql_query('SELECT dato FROM teller'); while ($data = mysql_fetch_assoc($get_data)) { $date_array = explode('-', $data['dato']); $dato_array[] = date('j. F Y', mktime(0, 0, 0, $date_array[1], $date_array[2], $date_array[0])); } $time_end = microtime(true); $time_used = $time_end - $time_start; echo "Brukte {$time_used} sekunder (eller noe sånt) <pre>"; print_r($dato_array); echo '</pre>'; ?> combo.php PHP <?php require('connect.php'); $dato_array = array(); $time_start = microtime(true); $get_data = mysql_query('SELECT UNIX_TIMESTAMP(dato) AS unix_time FROM teller'); while ($data = mysql_fetch_assoc($get_data)) { $dato_array[] = date('j. F Y', $data['unix_time']); } $time_end = microtime(true); $time_used = $time_end - $time_start; echo "Brukte {$time_used} sekunder (eller noe sånt) <pre>"; print_r($dato_array); echo '</pre>'; ?> RESULTATER: combo.php: 1. 0.149677 2. 0.042432 3. 0.032997 4. 0.035732 mysql_only.php: 1. 0.004956 2. 0.006374 3. 0.023619 4. 0.013931 5. 0.001812 6. 0.001848 7. 0.001770 php_only.php: 1. 0.138201 2. 0.072862 3. 0.079186 4. 0.071837 5. 0.093037 6. 0.109497 7. 0.076673 Jeg tror MySQL eller Linux cacher som et helvete, og jeg har prøvd å fylle cachen med andre spørringer mellom hver test, men det ser allikevel ut som at en god del blir cachet. Uansett kan det se ut som at rein MySQL er kjappest. Dette er kanskje pga. cachingen, men fakta er at det er den kjappeste måten i praksis, samtidig som den er den enkleste (bruker kun én funksjon). Dataene som er brukt er en logg på 900 oppføringer, der datoen er lagret som DATETIME. Systemet som er brukt er Ubuntu Linux 7.04 med Apache 2.2.3, PHP 5.2.1 og MySQL 5.0.38. Endret 10. juli 2007 av endrebjorsvik Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå