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

PHP &MySQL:Преобразуване на съхранения TIMESTAMP в локална часова зона на потребителя

Стойностите за дата/час/дата и час се съхраняват в MySQL, когато ги предоставите. т.е. ако INSERT низът 2012-04-17 12:03:23 в DATETIME колона, това е стойността, която ще бъде съхранена. Тя ще бъде вътрешно преобразувана във времеви клеймо, което може да е или не е точно (вижте по-долу), но когато потърсите отново стойността, ще получите същата стойност обратно; двупосочното пътуване е прозрачно.

Може да възникнат проблеми, ако се опитате да правите времеви изчисления в SQL. т.е. всяка операция, която изисква SQL да вземе предвид часовата зона и/или времето на сървъра. Например, като използвате NOW() . За която и да е от тези операции, часовата зона и/или времето на сървъра трябва бъде настроен правилно. Вижте Проблеми с часовата зона .

Ако това не ви засяга и трябва да правите изчисления само в PHP, трябва само да сте сигурни, че знаете от коя часова зона в коя часова зона искате да преобразувате. За тази цел може бъде удобно да стандартизирате всички времена до UTC, но не е необходимо, тъй като преобразуването на часовата зона от всяка часова зона в която и да е друга часова зона работи също толкова добре, стига да сте наясно от коя часова зона и към коя часова зона преобразувате.

date_default_timezone_set('Asia/Tokyo'); // your reference timezone here

$date = date('Y-m-d H:i:s');

/* INSERT $date INTO database */;

$date = /* SELECT date FROM database */;

$usersTimezone = new DateTimeZone('America/Vancouver');
$l10nDate = new DateTime($date);
$l10nDate->setTimeZone($usersTimezone);
echo $l10nDate->format('Y-m-d H:i:s');


  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. MySQL:Как да нулирам или променям паролата за root на MySQL?

  3. Как да генерирате фрагмента като тези, генерирани от Google с PHP и MySQL?

  4. Как да използвам повторно стойности на auto_increment?

  5. Вмъкване с помощта на PreparedStatement. Как да увелича автоматично идентификатора?