Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verziou danej stránky.
Next revision | Previous revision | ||
dev:omega:events [2014/10/27 16:28] Roman Sališ Deleted by move plugin |
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ínami ====== | + | ====== 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 17: | Riadok 17: | ||
Niektoré polia súvisiace s časom: | Niektoré polia súvisiace s časom: | ||
^ Pole ^ Typ ^ Význam ^ | ^ Pole ^ Typ ^ Význam ^ | ||
- | | ``event_tzo`` | int | Časové pásmo v minútach, získané z technológie | | + | | ``event_tzo`` | //int// | Časové pásmo v minútach, získané z technológie | |
- | | ``event_date_start`` | unsigned int | Začiatok termínu ako UTC | | + | | ``event_date_start`` | //unsigned int// | Začiatok termínu ako UTC | |
- | | ``event_date_end`` | unsigned int | Koniec termínu ako UTC | | + | | ``event_date_end`` | //unsigned int// | Koniec termínu ako UTC | |
- | | ``event_local_date_start`` | datetime | Začiatok termínu v lokálnom čase servera | | + | | ``event_local_date_start`` | //datetime// | Začiatok termínu v lokálnom čase servera | |
- | | ``event_local_date_end`` | datetime | Koniec termínu v lokálnom čase servera | | + | | ``event_local_date_end`` | //datetime// | Koniec termínu v lokálnom čase servera | |
===== Príklad ===== | ===== Príklad ===== | ||
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> |