sql >> Database >  >> RDS >> Mysql

MySQL CONVERT_TZ()

Als dit null oplevert, zijn de TZ-tabellen niet ingesteld:

SELECT CONVERT_TZ(now(),'US/Eastern','US/Central');

Als u de tijdzonetabellen niet heeft ingesteld, kunt u de uuroffset in de gebruikerstabel bijwerken en dan het volgende doen:

select utc_timezone() - interval user_timezone_offset_in_hours hour
from userinfo a
where user_id = 999;

Je hebt echter nog steeds een manier nodig om de tijdzone van de gebruiker bij te werken.

Als je dit voor een webtoepassing schrijft, kun je de tijdzone via javascript krijgen, hier is een artikel dat beschrijft hoe (heb dit niet geprobeerd, maar het lijkt erop dat het zal werken).

Een beetje uitleg met betrekking tot 'interval' hierboven...

Een van de meer trucconstructies in MySQL is het gebruik van de INTERVAL trefwoord, het best weergegeven door voorbeeld de (numerieke waarde kan een uitdrukking of de veldwaarde zijn)

select now() today, now() - interval 1 day yesterday;
+---------------------+---------------------+
| today               | yesterday           |
+---------------------+---------------------+
| 2011-05-26 13:20:55 | 2011-05-25 13:20:55 |
+---------------------+---------------------+

Je kunt ze optellen en aftrekken zoals je wilt, dit is waarom ik nooit moeite met de datum/tijd optellen/aftrekken/converteren functies

select now() a, now() - interval 1 day + interval 4 hour + interval 8 minute b;
+---------------------+---------------------+
| a                   | b                   |
+---------------------+---------------------+
| 2011-05-26 13:24:16 | 2011-05-25 17:32:16 |
+---------------------+---------------------+

U kunt negatieve getallen gebruiken (zou goed moeten zijn voor negatieve tijdzone-offsets) deze zijn hetzelfde:

select now() - interval 1 month a, now() + interval -1 month b;
+---------------------+---------------------+
| a                   | b                   |
+---------------------+---------------------+
| 2011-04-26 13:38:05 | 2011-04-26 13:38:05 |
+---------------------+---------------------+


  1. CURRENT_TIMESTAMP in milliseconden

  2. Een nieuwe waarde toevoegen aan een bestaand ENUM-type

  3. Wat is STATISTICS IO in SQL Server?

  4. Het compatibiliteitsniveau van een database wijzigen met T-SQL