Thread SQLite: Datumsfunktionen mit oder ohne Zeitzone (6 answers)
Opened by Kuerbis at 2024-03-13 11:29

Kuerbis
 2024-03-13 11:29
#195925 #195925
User since
2011-03-20
943 articles
BenutzerIn
[default_avatar]
Hallo,

in App::DBBrowser gibt es die Datumsfunktionen EPOCH_TO_DATETIME und UNIX_TIMESTAMP.

Daten:
Code: (dl )
1
2
3
dt = '1970-01-02 00:00:00'
sec = 86400
tz-offset = + 01:00:00


Für SQLite sehen diesen Funktionen zurzeit so aus:
Code: (dl )
1
2
3
4
5
UNIXEPOCH("dt",'utc','subsec')
82800

DATETIME("sec",'unixepoch','localtime')
1970-01-02 01:00:00


Ist das gut so, oder sollte die Zeitzone nicht berücksichtigt werden:
Code: (dl )
1
2
3
4
5
UNIXEPOCH("dt",'subsec')
86400

DATETIME("sec",'unixepoch')
1970-01-02 00:00:00



Die anderen Datenbankarten:
(Nachkomma-Nullen wo vorhanden weggelassen)

MySQL/MariaDB:
Code: (dl )
1
2
3
4
5
UNIX_TIMESTAMP(`sec`)
82800

FROM_UNIXTIME(`Seconds`)
1970-01-02 01:00:00


PostgreSQL:
Code: (dl )
1
2
3
4
5
EXTRACT(EPOCH FROM "dt"::timestamp with time zone) 
82800

TO_TIMESTAMP("sec"::bigint)::timestamp
1970-01-02 01:00:00


Firebird:
Code: (dl )
1
2
3
4
5
DATEDIFF(MILLISECOND,TIMESTAMP '1970-01-01 00:00:00',"dt") * 0.001
86400

SUBSTRING(CAST(DATEADD(SECOND,CAST("sec" AS BIGINT),TIMESTAMP '1970-01-01 00:00:00') AS VARCHAR(24)) FROM 1 FOR 19)
1970-01-02 00:00:00


DB2
Code: (dl )
1
2
3
4
5
EXTRACT(EPOCH FROM "dt")
86400

TIMESTAMP('1970-01-01 00:00:00',0) + "sec" SECONDS
1970-01-02 00:00:00


Informix:
Code: (dl )
1
2
3
4
  ---

DBINFO('utc_to_datetime',"sec"/1)
1970-01-02 01:00:00


Oracle:
Code: (dl )
1
2
3
4
5
TRUNC(("dt" - date '1970-01-01') * 86400)
86400

TO_CHAR(TO_TIMESTAMP('19700101000000','YYYYMMDDHH24MISS')+NUMTODSINTERVAL("sec",'SECOND'),'YYYY-MM-DD HH24:MI:SS')
1970-01-02 00:00:00

View full thread SQLite: Datumsfunktionen mit oder ohne Zeitzone