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 [2014/10/29 19:41] Roman Sališ [Polia v tabuľke `st2_events`] |
dev:omega:events [2017/10/21 09:13] (aktuálne) Roman Sališ [Práca s termínmi] |
||
---|---|---|---|
Riadok 1: | Riadok 1: | ||
====== Práca s termínmi ====== | ====== Práca s termínmi ====== | ||
- | ===== Súhrn ===== | + | |
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 50: | Riadok 50: | ||
==== MySQL ==== | ==== MySQL ==== | ||
+ | === Prevod na lokálny dátum === | ||
+ | <code mysql space=2> | ||
+ | SET `event_local_date_start` := | ||
+ | CONVERT_TZ( | ||
+ | FROM_UNIXTIME(`event_date_start` + (`event_tzo` * 60)), | ||
+ | @@session.time_zone, | ||
+ | "+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> |