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> | ||