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

Как мога да вмъкна реално време на събитие в база данни с помощта на php mysqli?

Вместо да се занимавате с часовите зони, защо просто не го направите

ALTER TABLE `your_table`
  CHANGE `date_added` `date_added`
  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

Това ще се промени вашата колона от колона DATE в колона TIMESTAMP , преобразувайки всички дати в съответните им времеви марки по UTC в процеса.

Когато се вмъкне нов ред, той ще използва текущото времеви печат като стойност . Отпечатъците за време винаги са в UTC, така че не е нужно да променяте часовата зона на вашия MySql сървър, нито да предоставяте датата при вмъкване на нов ред.

Ако не можете или не искате да промените колоните си, можете също така просто да изберете времевата марка чрез

SELECT UNIX_TIMESTAMP('date_added') FROM your_table;

За своя TimeAgo можете просто да го направите

$now = new DateTime;
$dateAdded = new DateTime("@$yourTimestampFromDb");
$dateAdded->setTimezone($now->getTimezone());
$timeSinceAdded = $dateAdded->diff($now);

Когато предоставите времева марка на DateTime, тя винаги ще използва UTC, независимо от зададената часова зона на вашия сървър по подразбиране. Следователно, трябва или да конвертирате $dateAdded към часова зона по подразбиране (както е показано по-горе) или конвертирайте $timeSinceAdded до UTC.

За да промените dateTime към часовата зона на посещаващия в момента потребител, или

Във всеки случай, вие просто променяте и двете DateTimes към тази часова зона. Това се прави лесно чрез setTimezone() .

$timeSinceAdded тогава ще бъде DateInterval обект, който можете да използвате по този начин

echo $timeSinceAdded->format('%a total days');

Моля, вижте връзките за повече подробности, например относно наличните модификатори на формат.



  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:ИЗИСКВА SSL не се показва в грантовете

  2. Подредете записи на SQL заявки по честота

  3. Съхранявайте чувствителни данни в Silverstripe 3.1

  4. Изтрийте редове с Laravel конструктор на заявки и LEFT JOIN

  5. MySQL код на грешка:1064. Имате грешка във вашия SQL синтаксис