DOAG Konferenz Eine kurze Geschichte der Zeit

52
Eine kurze Geschichte der Zeit DOAG Konferenz 16. – 18.11.2010, Nürnberg Martin Hoermann [email protected] www.ordix.de

Transcript of DOAG Konferenz Eine kurze Geschichte der Zeit

2010-K-DB-Hoermann-Zeit_neu16. – 18.11.2010, Nürnberg
Eine kurze Geschichte der (Oracle) Zeit
Gaia stiftete schließlich Kronos an, den Vater mit einer Sichel zu entmannen, und Kronos wurde damit zum Herrscher der Welt und Begründer des Goldenen Zeitalters.
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann
http://www.wikipedia.de
Zusätzliche UnterlagenFAQ: 340512.1 Timestamp
Literatur
Wo ist Larry?
Kalender
Sonderbares
Fazit
INTERVAL { YEAR TO MONTH | DAY TO SECOND }
CREATE TABLE zeiten
CREATE TABLE zeiten
, ts_ltz TIMESTAMP WITH LOCAL TIME ZONE
, i_y2m INTERVAL YEAR(3) TO MONTH
, i_d2s INTERVAL DAY(4) TO SECOND(2)
);
5 / 51
Wie TIMESTAMP, zuzüglich eines
Wie TIMESTAMP, aber Darstellung
ist abhängig von Session
Kapitel 10 - 71 Seiten
DB Time Zone +00:00
Session Time Zone +06:00
eine Konvertierung vor der Anzeige vorgenommen!
7 / 51
type_ts_tz.sql
23.11.2010 14:30:00 +02:00
23.11.2010 12:30:00 +02:00
Bedeutung haben!
type_ts_tz.sql
23.11.2010 14:30:00 Europe/Berlin Bei Konvertierungen kann die Session Time Zone eine
Bedeutung haben!
23.11.2010 14:30:00 +03:00
type_ts_ltz.sql
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann
DB Time Zone +00:00
Session Time Zone +06:00
23.11.2010 17:30:00
23.11.2010 11:30:00 TZH:TZD Oracle recommends that you set the database time zone to
UTC (0:00). Doing so can improve performance, especially
across databases, as no conversion of time zones will be
required.
10 / 51
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 11 / 51
Umwandlung: Text in Datum
INSERT INTO ... VALUES( '31.12.10 23:59:59',... );
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann
Funktionen zur expliziten Umwandlung
to_timestamp( '31.12.2010 23:59:59.123'
Datums-Datentyp
'WW YYYY' => 01 2011
'IW IYYY' => 52 2010
nls_time_format
nls_time_tz_format
nls_date_format
nls_timestamp_format
nls_timestamp_tz_format
Ein Datum ist nicht mehr als die Summe seiner Bestandteile…
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 16 / 51
Agenda
Datentypen
Zeitarithmetik
Zeitzonen
Kalender
Sonderbares
Fazit
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 18 / 51
Zeitarithmetik, die gute alte Zeit (DATE)
sysdate + 1 + 1 Tag
sysdate - 1/24 - 1 Stunde
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann
sysdate - to_yminterval( '+ 1-2') + 1 Jahr und 2 Monate
SQL> SELECT date '2012-02-29' + to_yminterval( '+ 1-0')
*
29. Feb. 2013 existiert nicht
19 / 51
TIMESTAMP{+|-}
NUMBER
INTERVAL
INTERVAL{*|/} NUMBER INTERVAL
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 22 / 51
Agenda
Datentypen
Zeitarithmetik
Zeitzonen
Kalender
Sonderbares
Fazit
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 24 / 51
Zeitzonen: New York, Rio, Tokio
$ORACLE_HOME/oracore/zoneinfo/
ORA_TZFILE
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 25 / 51
Von Europe/Berlin nach UTC
Von UTC nach Europe/Berlin
zeitzonen.sql
FROM_TZ(<timestamp> , '+00:00') AT TIME ZONE 'Europe/Berlin'
26 / 51
error_on_overlap_time.sql
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann
If you do not add the TZD format element, and the datetime value is ambiguous, then Oracle Database returns an
error if you have the ERROR_ON_OVERLAP_TIME session parameter set to TRUE.
If ERROR_ON_OVERLAP_TIME is set to FALSE (the default value), then Oracle Database interprets the ambiguous
datetime as Standard Time.
FEHLER in Zeile 2:
Regionsübergang deaktiviert
27 / 51
Zeitzonen timezone.sql
FUNCTION daylight_switch_order ...
------------------- --------------------------- ------
28 / 51
Betriebssystem
Uhr
Repeating jobs with frequencies smaller than daily follow their frequencies exactly across daylight savings
adjustments. For example, suppose that a job is scheduled to repeat every 3 hours, the clock is moved forward from
1:00 a.m. to 2:00 a.m., and the last time the job ran was midnight. Its next scheduled time will be 4:00 a.m. Thus, the
3 hour period between subsequent job runs is retained. The same applies when the clock is moved back. This
behavior is not the case for repeating jobs that have frequencies of daily or larger. For example, if a repeating job is
supposed to be executed on a daily basis at midnight, it will continue to run at midnight if the clock is moved forward
or backward. When the execution time of such a daily (or larger frequency) job happens to fall inside a window where
the clock is moved forward, the job executes at the end of the window.
Oracle® Database PL/SQL Packages and Types Reference - 114 DBMS_SCHEDULER
30 / 51
Upgrade Time Zone File
ID 357056.1 Impact of changes to daylight saving time (DST) rules on the Oracle database
USA 2006 USA 2007
ORA_DST_AFFECTED
Enables you to verify whether the data in a column is affected by
upgrading the DST rules from one version to another version
ORA_DST_CONVERT
Enables you to upgrade your TSTZ column data from one version to
another
ORA_DST_ERROR
Enables you to verify that there are no errors when upgrading a datetime
value 31 / 51
Kalender
Sonderbares
Fazit
http://www.muenster.de/
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann
http://www.ortelius.de/kalender/
-----------
Wie viele Tage hat welcher Monat?
last_day( datum )
03 Khordad 31
04 Te 31
05 Amordad 31
06 Shahruoar 31
07 Mehr 30
08 Aban 30
09 Athar 30
10 Dei 30
11 Bahman 30
12 Esfand 29
to_char( tag
, 'Month, DD.MM.YYYY'
, 'NLS_CALENDAR=''PERSIAN'''
) AS tag_persian
SQL> @persian
TAG_GREGOR TAG_PERSIAN
Definition Schaltjahre / Schaltsekunden
Julianisch
365,2425
37 / 51
DATUM
01.10.1582
02.10.1582
03.10.1582
04.10.1582
15.10.1582
16.10.1582
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 39 / 51
Kalender: Schaltjahre
WHEN( mod( extract( Year FROM tag), 400) = 0 ) THEN 'Leap'
WHEN( mod( extract( Year FROM tag), 100) = 0 ) THEN 'No Leap'
WHEN( mod( extract( Year FROM tag), 4) = 0 ) THEN 'Leap'
ELSE 'No Leap'
DATUM LEAP_YEAR
Kalender
Sonderbares
Fazit
ASTRO COMMON ORACLE
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann
Schaltjahre
42 / 51
DATUM
jahr0.sql
http://www.ocelot.ca/ocelot.htm
ORA-01841: (Volles) Jahr muss zwischen -4713 und +9999 liegen
und darf nicht 0 sein
43 / 51
Internes Format
---------------------------------------------------------------
| | | | | | | | | |
| | | | | | | |-------- Minuten
| | | | | | |----------- Stunden
| | | | | |-------------- Tag
| | | | |----------------- Monat
|-------------------------------- Datentyp
Wenn das gleiche Datum aus der Datenbank gelesen wird, werden einige Spalten mit einem Offset angezeigt.
44 / 51
Kalender
Sonderbares
Fazit http://www.uhrenstadt-glashuette.de
45 / 51
Weitere Vorträge
Vorträge zum Thema Oracle Vorträge zum Thema Java Vortrag zum Thema MySQL
Vorträge zum Thema IT-Management
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 46 / 51
Begleitende CD
ORDIX Stand,
Ebene 3,
Stand 324
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 47 / 51
Welche Zeit ist die Richtige?
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann
www.glashuette.comwww.union-glashuette.com www.muehle-glashuette.de
www.soehnle-uhren.dewww.glashuette-original.com www.alange-soehne.com
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 49 / 51
Grande Complication
Grande Complication ist die französische Bezeichnung für ein komplexes Werk
einer Armband- oder Taschenuhr, welches neben dem normalen Gehwerk
(Stunde, Minute und Sekunde) noch weitere Funktionen (Komplikationen, frz.
Complication) aufweist. http://www.wikipedia.de
Eine kurze Geschichte der (Oracle) Zeit, Martin Hoermann 50 / 51
Vielen Dank für Ihre Zeit!
einfach. gut. beraten.