sql >> Database teknologi >  >> RDS >> Mysql

Hvordan gemmer man bedst dato/tid i MySql?

  1. Typisk bør du hverken gøre det:datatyperne i databaselaget burde være meningsfulde (som muligt) i sig selv og ikke afhænge af din applikation til at fortolke dem. Som @Jim DeLaHunt siger , dette gør det muligt for databasen nemt at manipulere/fortolke dem fra SQL efter behov (og giver dig også mulighed for nemt at få adgang til de samme data fra en anden applikationskodebase i fremtiden).

    MySQL har fem tidsmæssige typer , hvoraf kun to gemmer både en dato og et klokkeslæt:DATETIME og TIMESTAMP .

    Som andre har hentydet, kommer forskellen ned på, om du ønsker at gemme tidszonen - selvom jeg synes, det er en ret forvirrende måde at se det på:

    • TIMESTAMP bruger sessionens time_zone variabel til at konvertere input til et UTC-tidsstempel og derefter tilbage igen for output:det er nyttigt til at specificere et nøjagtigt tidspunkt i tiden;

    • DATETIME gemmer blot datoen og klokkeslættet uden hensyn til tidszone, ligesom at tage et billede af en kalender og et ur:det er nyttigt til at specificere en begivenhed, der finder sted i samme lokale tid globalt.

  2. Ligesom du ville erklære enhver anden kolonne, angiver du den relevante datatype efter kolonnenavnet.

    Pas på at TIMESTAMP har yderligere funktioner, såsom automatisk opdatering , som du måske ønsker at deaktivere i din kolonneerklæring, hvis det ønskes.

  3. Ved at bruge en af ​​ovenstående tidsmæssige typer vil du være i stand til at gøre alt dette (ved at bruge datofunktioner som krævet). Standardoutputtet for TIMESTAMP og DATETIME typer er en streng i 'YYYY-MM-DD HH:MM:SS' format.

    Især den "forløbne tid" ved at sammenligne to værdier kunne f.eks. fås med MySQL's TIMEDIFF() funktion:

    SELECT TIMEDIFF(end, start) AS elapsed
    FROM   my_table
    WHERE  ...
    


  1. Unik nøgle i Oracle med eksempler

  2. Brug af tællefunktionen til at bestemme, hvad der vises i if-sætningen

  3. Vælg alle, hvor feltet indeholder streng adskilt med komma

  4. Hvordan fjerner man HTML-tags fra en streng i SQL Server?