Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać datę w milisekundach uniksowych w MySQL?

Nie. DateTime wartości powinny być przechowywane jako DateTime , chyba że masz naprawdę dobry powód, aby przechowywać je w inny sposób (np. w celu obsługi wartości daty i czasu poza wartościami min/max DateTime ), sugerowałbym pozostawienie go w DateTime kolumna.

Zawsze możesz manipulować sposobem zwracania ich z bazy danych podczas Select lub w warstwie prezentacji. Aby zwrócić czas uniksowy z DateTime , MySql zapewnia wbudowaną metodę o nazwie UNIX_TIMESTAMP . Aby zwrócić liczbę milisekund, po prostu pomnóż przez 1000, ponieważ uniksowy znacznik czasu to liczba sekund od 1 stycznia 1970 (nie licząc sekund przestępnych). Jeśli chcesz przechowywać czas uniksowy, będziesz musiał użyć typu danych int.

Pamiętaj, że jeśli przechowujesz czas uniksowy zamiast przechowywać rzeczywisty DateTime wartość w DateTime kolumna typu danych, stracisz możliwość łatwego korzystania ze wszystkich funkcji datetime wbudowanych w bazę danych. Na przykład, jeśli chcesz dowiedzieć się, ile wierszy należy do konkretnego miesiąca, musisz najpierw przetłumaczyć dane z int na datetime i dopiero wtedy będziesz mógł to obliczyć.

Stracisz również dokładność (ponieważ czas unixowy jest niedokładny nawet przy rozdzielczości 1 sekundy, ponieważ ignoruje sekundy przestępne).

Podsumowując - gdy baza danych oferuje typ danych, który pasuje do danych, nie przechowuj tych danych przy użyciu innego typu danych. użyj Date typ danych, jeśli chcesz przechowywać tylko daty, DateTime typ danych, jeśli chcesz przechowywać wartości daty i godziny oraz Time typ danych, jeśli chcesz przechowywać określoną godzinę w ciągu dnia.

PS
Jeśli masz do czynienia z wartościami dat i godzin, zwłaszcza jeśli masz do czynienia z klientami z wielu lokalizacji, ZAWSZE przechowuj w bazie danych tylko czas UTC, o ile oczywiście nie chcesz oszaleć.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC zawsze testuje ostatni wiersz tabeli MySQL?

  2. org.hibernate.HibernateException:baza danych nie zwróciła natywnie wygenerowanej wartości tożsamości

  3. Automatyczne zwiększanie wartości niestandardowych MySQL

  4. MySQL LOAD DATA INFILE:działa, ale nieprzewidywalny terminator linii

  5. Wybierz losowy wiersz z MySQL (z prawdopodobieństwem)