Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verziou danej stránky.
Both sides previous revision Previous revision Next revision | Previous revision | ||
dev:omega:events [2015/10/13 14:53] Roman Sališ [MySQL] |
dev:omega:events [2017/10/21 09:13] (aktuálne) Roman Sališ [Práca s termínmi] |
||
---|---|---|---|
Riadok 4: | Riadok 4: | ||
Termíny v SystemOmega sú ukladané v tabuľke **``st2_events``**. | Termíny v SystemOmega sú ukladané v tabuľke **``st2_events``**. | ||
- | Začiatok a koniec termínu je uložený ako [[wp>UTC]] ((Koordinovaný svetový čas alebo Coordinated Universal Time)) unixový čas ((Počet sekúnd od 1.1.1970)). Dalo by sa aj povedať, že sú uložené v časovom pásme ''+0000''. | + | Začiatok a koniec termínu je uložený ako [[wp>UTC]] ((Koordinovaný svetový čas alebo Coordinated Universal Time)) unixový čas ((Počet sekúnd od 1.1.1970)). Dalo by sa aj povedať, že sú uložené v časovom pásme ''+0000''. Je to prevencia proti problémom spojených so striedaním zimného a letného času. |
Každá technológia, v ktorej sú umiestené termíny, má nastavené časové pásmo (v minútach), v ktorom sa nachádza. Napríklad technológie umiestnené v Bratislave majú časové pásmo ''+0100'', teda v databáze je uložené ''+60'' minút. | Každá technológia, v ktorej sú umiestené termíny, má nastavené časové pásmo (v minútach), v ktorom sa nachádza. Napríklad technológie umiestnené v Bratislave majú časové pásmo ''+0100'', teda v databáze je uložené ''+60'' minút. | ||
Riadok 52: | Riadok 52: | ||
=== Prevod na lokálny dátum === | === Prevod na lokálny dátum === | ||
<code mysql space=2> | <code mysql space=2> | ||
- | SET NEW.`event_local_date_start` := | + | SET `event_local_date_start` := |
CONVERT_TZ( | CONVERT_TZ( | ||
- | FROM_UNIXTIME(NEW.`event_date_start` + (NEW.`event_tzo` * 60)), | + | FROM_UNIXTIME(`event_date_start` + (`event_tzo` * 60)), |
@@session.time_zone, | @@session.time_zone, | ||
"+00:00" | "+00:00" | ||
); | ); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | === Prevod z lokálneho dátumu === | ||
+ | <code mysql space=2> | ||
+ | SET `event_date_start` := | ||
+ | UNIX_TIMESTAMP( | ||
+ | CONVERT_TZ( | ||
+ | DATE_SUB(`event_local_date_start`, INTERVAL `event_tzo` MINUTE), | ||
+ | "+00:00", @@session.time_zone | ||
+ | ) | ||
+ | ); | ||
+ | </code> | ||
+ | |||
+ | Druhá metóda, snáď rýchlejšia: | ||
+ | <code mysql space=2> | ||
+ | SET `event_date_start` := | ||
+ | UNIX_TIMESTAMP( | ||
+ | CONVERT_TZ( | ||
+ | `event_local_date_start`, | ||
+ | "+00:00", | ||
+ | @@session.time_zone | ||
+ | ) | ||
+ | ) - (`event_tzo` * 60); | ||
</code> | </code> |