Mysql
 sql >> база данни >  >> RDS >> Mysql

Как най-добре да съхранявате дата/час в MySql?

  1. Обикновено не трябва да правите нито едно:типовете данни в слоя на базата данни трябва да имат смисъл (доколкото е възможно) сами по себе си и да не зависят от вашето приложение, за да ги интерпретира. Както казва @Jim DeLaHunt , това позволява на базата данни лесно да ги манипулира/интерпретира от SQL според изискванията (и също така ви позволява лесен достъп до същите данни от друга кодова база на приложение в бъдеще).

    MySQL има пет темпорални типа , само две от които съхраняват и дата, и час:DATETIME и TIMESTAMP .

    Както споменаха други, разликата се свежда до това дали искате да съхраните часовата зона - въпреки че намирам, че това е доста объркващ начин да го разгледате:

    • TIMESTAMP използва time_zone на сесията променлива за преобразуване на входа в UTC времеви печат и след това обратно за изход:полезно е за определяне на точен момент от времето;

    • DATETIME просто съхранява датата и часа без оглед на часовата зона, подобно на снимане на календар и часовник:полезно е за определяне на събитие, което се случва в едно и също местно време в световен мащаб.

  2. Точно както бихте декларирали всяка друга колона, посочвате съответния тип данни след името на колоната.

    Внимавайте с TIMESTAMP има допълнителни функции, като автоматична актуализация , което може да искате да деактивирате във вашата декларация на колона, ако желаете.

  3. Използвайки един от горните времеви типове, ще можете да направите всичко това (с помощта на функции за дата както се изисква). Изходът по подразбиране на TIMESTAMP и DATETIME type е низ в 'YYYY-MM-DD HH:MM:SS' формат.

    По-специално, "изминалото време" от сравняване на две стойности може например да се получи с TIMEDIFF() функция:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Външни ключове в MySQL?

  2. Как да използвате orchestral/tenanti в Laravel 5, за да изградите приложение с множество наематели с множество бази данни?

  3. АКТУАЛИЗИРАНЕ с INNER JOIN или MIN?

  4. MySQL:уникалното поле трябва да бъде индекс?

  5. BLOB срещу VARCHAR за съхранение на масиви в MySQL таблица