sql >> Database >  >> RDS >> Mysql

Hoe kan ik de datum/tijd het beste opslaan in MySql?

  1. Normaal gesproken zou u geen van beide moeten doen:de gegevenstypen in de databaselaag moeten op zichzelf (zo goed mogelijk) zinvol zijn en niet afhankelijk zijn van uw toepassing om ze te interpreteren. Zoals @Jim DeLaHunt zegt , hierdoor kan de database ze gemakkelijk manipuleren/interpreteren vanuit SQL zoals vereist (en stelt u ook in staat om in de toekomst gemakkelijk toegang te krijgen tot dezelfde gegevens vanuit een andere applicatiecodebase).

    MySQL heeft vijf tijdelijke typen , waarvan er slechts twee zowel een datum als een tijd bevatten:DATETIME en TIMESTAMP .

    Zoals anderen al hebben gezegd, komt het verschil neer op het feit of je de tijdzone wilt opslaan - hoewel ik dat nogal een verwarrende manier vind om ernaar te kijken:

    • TIMESTAMP gebruikt de time_zone van de sessie variabele om invoer om te zetten in een UTC-tijdstempel en vervolgens weer terug voor uitvoer:het is handig om een ​​exact moment in de tijd op te geven;

    • DATETIME slaat eenvoudig de datum en tijd op zonder rekening te houden met de tijdzone, net zoals het maken van een foto van een kalender en klok:het is handig om een ​​gebeurtenis op te geven die wereldwijd in dezelfde lokale tijd plaatsvindt.

  2. Net zoals u elke andere kolom zou declareren, specificeert u het relevante gegevenstype achter de kolomnaam.

    Pas op dat TIMESTAMP heeft extra functies, zoals automatische update , die u desgewenst kunt uitschakelen in uw kolomdeclaratie.

  3. Als u een van de bovenstaande tijdelijke typen gebruikt, kunt u dit allemaal doen (met behulp van datumfuncties zoals gevraagd). De standaarduitvoer van TIMESTAMP en DATETIME types is een string in 'YYYY-MM-DD HH:MM:SS' formaat.

    In het bijzonder kan de "verstreken tijd" van het vergelijken van twee waarden bijvoorbeeld worden verkregen met MySQL's TIMEDIFF() functie:

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


  1. DAY() Voorbeelden – MySQL

  2. SQL Server equivalent aan MySQL enum gegevenstype?

  3. Vind de bytegrootte van een rij in PostgreSQL

  4. Modal Window-berichten weergeven in Oracle Forms met Show_Alert