![]() ![]() ![]() ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< Tilbage Dato og tid i MySQLHvilket format?Når du gemmer tidspunkter/datoer i en MySQL database, så er det en god ide at bruge felttypen datetime. Datetime er MySQL's indbyggede tidsformat, og giver en masse muligheder for udvælgelse af poster. Derudover er formatet nemt at forstå når man browser sin database. En datetime er defineret med følgende format: yyyy-mm-dd hh:mm:ssEksempelvis: 2006-07-30 18:30:00 (30 juni 2006 kl.18:30) Indsætte dags datoHerunder er et eksempel på hvordan der oprettes en ny post hvor feltet tid sættes til dags dato, samt hvor vi opdatere en post og sætter tid til dags datoKode:
Resultatet bliver følgende (mintabel): +----+---------------------+ | id | tid | +----+---------------------+ | 1 | 2006-06-15 21:30:15 | +----+---------------------+ Formatering af datetimeDu kan hive indholdet af datetime feltet ud på almindelig vis (SELECT tid FROM mintabel), men er du låst fast med en streng i det originale format (yyyy-mm-dd hh:mm:ss). Man kan selvfølgelig også hive datoen ud præcis som man ønsker den. Til dette formål bruger vi den indbyggede funktion DATE_FORMAT(). Et eksempel:Kode:
+----+------------+ | id | tid | +----+------------+ | 1 | 15-06-2006 | +----+------------+Det første parameter i DATE_FORMAT fortæller hvilket datetime felt i databasen vi ønsker at formatere. Og det næste parameter er en streng der bestemmer selve formatet. Her bliver f.eks. %Y til 2006 og %d til 02. Her er en tabel over de bogstaver man kan bruge til at få det ønskede format ud:
Et eksempel mere: Kode:
+----+---------------------+------------------+ | id | tid | nytid | +----+---------------------+------------------+ | 1 | 2006-06-15 21:00:15 | 15.06.2006 21:00 | +----+---------------------+------------------+ ..mere specifiktOvenstående måde at udvælge tiden på (som en streng) er god hvis man udelukkende skal kommunikere med brugeren. Men skal man lave nogle beregninger i sit php-script, så er det en fordel at hente de enkelte værdier (år, måned..) ud enkeltvis. Et eksempel på hvordan man kan gøre det:Kode:
+------+--------+------+ | aar | maaned | dag | +------+--------+------+ | 2006 | 6 | 2 | +------+--------+------+Her bruger man altså fx YEAR(tid) til at finde årstallet på feltet tid. Andre muligheder for at udvælge:
Trække unix timestamp format udMan kan konvertere direkte fra datetime formatet til timestamp i MySQL. Det gøres vha. funktionen UNIX_TIMESTAMP(felt), eks.:Kode:
+----+------------+ | id | tid | +----+------------+ | 1 | 1149275897 | +----+------------+ DatosøgningerDet er fantastisk nemt at udvælge bestemte tidspunkter fra sin database, f.eks. alle poster med en dato fra en bestemt dag og et bestemt år. Et simpelt eksempel hvor årstaller skal være 2006 og måneden juni (måned 6):Kode:
+----+---------------------+ | id | tid | +----+---------------------+ | 1 | 2006-06-02 21:18:17 | | 4 | 2006-06-10 17:19:11 | | 5 | 2006-06-03 18:09:14 | +----+---------------------+Som man kan se er det lidt samme princip som i det sidste afsnit. YEAR(tid) giver årstallet af "tid" feltet, og det skal altså være lig 2006 i eksemplet. Man kan også bruge større end og mindre end som med almindelig integer felter: Kode:
+----+---------------------+ | id | tid | +----+---------------------+ | 1 | 2006-06-01 13:49:03 | | 2 | 2006-06-15 18:55:14 | | 4 | 2006-09-12 13:21:50 | +----+---------------------+Alle poster hvor årstallet af tid er større end 2005, og før kl. 19. SorteringSelvom datetime har formatet yyyy-mm-dd hh:mm:ss kan man sagtens sortere på samme måde som almindelig tal (dvs. vha. ORDER BY tidsfelt). Et eksempel med nyeste poster øverst:Kode:
+----+---------------------+ | id | tid | +----+---------------------+ | 4 | 2006-09-12 13:21:50 | | 6 | 2006-06-03 14:43:49 | | 1 | 2006-06-01 13:49:03 | | 3 | 2006-05-15 23:12:28 | | 5 | 2005-09-26 19:24:00 | +----+---------------------+ Lægge tid til en datoForestil dig at du gerne vil have alle poster indenfor den sidste time. Eller du gerne vil finde ud af hvilket tidspunkt 45 minutter lagt til har. Til det formål kan vi bruge ADDDATE(), som laver en ny dato ud fra en anden dato, med et bestemt interval lagt til eller trukket fra. Her er nogle eksempler på brugen:Kode:
|