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/28 10:44] Roman Sališ |
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 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> | ||