Timestamp-Ressourcen

Referenz zu SQL-Zeitstempelfunktionen

Referenz zu SQL-Zeitstempelfunktionen

Kurzreferenz für Zeitstempeloperationen in gängigen Datenbanksystemen.

Aktueller Zeitstempel

DatenbankAktueller Zeitstempel (UTC)Aktueller Zeitstempel (lokal)
MySQLNOW(), UTC_TIMESTAMP()NOW(), LOCALTIMESTAMP()
PostgreSQLNOW(), CURRENT_TIMESTAMPNOW(), CURRENT_TIMESTAMP
SQLitedatetime('now')datetime('now', 'localtime')
SQL-ServerGETUTCDATE()GETDATE(), SYSDATETIME()
OrakelSYSTIMESTAMP, SYS_EXTRACT_UTC(SYSTIMESTAMP)SYSTIMESTAMP

Unix-Zeitstempeloperationen

Aktuellen Unix-Zeitstempel abrufen

DatenbankCode
MySQLUNIX_TIMESTAMP()
PostgreSQLEXTRACT(EPOCH FROM CURRENT_TIMESTAMP)
SQLitestrftime('%s', 'now')
SQL-ServerDATEDIFF(s, '1970-01-01', GETUTCDATE())
Orakel(SYSTIMESTAMP - TO_TIMESTAMP('1970-01-01', 'YYYY-MM-DD')) * 86400

Unix-Zeitstempel in Datum konvertieren

DatenbankCode
MySQLFROM_UNIXTIME(1704067200)
PostgreSQLTO_TIMESTAMP(1704067200)
SQLitedatetime(1704067200, 'unixepoch')
SQL-ServerDATEADD(s, 1704067200, '1970-01-01')
OrakelTO_DATE('1970-01-01', 'YYYY-MM-DD') + (1704067200 / 86400)

Datum in Unix-Zeitstempel konvertieren

DatenbankCode
MySQLUNIX_TIMESTAMP('2024-01-01 00:00:00')
PostgreSQLEXTRACT(EPOCH FROM '2024-01-01 00:00:00'::timestamp)
SQLitestrftime('%s', '2024-01-01 00:00:00')
SQL-ServerDATEDIFF(s, '1970-01-01', '2024-01-01 00:00:00')
OrakelTO_CHAR('2024-01-01 00:00:00', 'J') - TO_CHAR(DATE '1970-01-01', 'J')) * 86400

Datumsformatierung

Gängige Datumsformate

DatenbankISO 8601US-FormatEU-Format
MySQLDATE_FORMAT(NOW(), '%Y-%m-%dT%H:%i:%s')DATE_FORMAT(NOW(), '%m/%d/%Y')DATE_FORMAT(NOW(), '%d/%m/%Y')
PostgreSQLTO_CHAR(NOW(), 'YYYY-MM-DD"T"HH24:MI:SS')TO_CHAR(NOW(), 'MM/DD/YYYY')TO_CHAR(NOW(), 'DD/MM/YYYY')
SQLitedatetime('now', 'iso8601')--
SQL-ServerFORMAT(GETUTCDATE(), 'yyyy-MM-ddTHH:mm:ss')FORMAT(GETDATE(), 'MM/dd/yyyy')FORMAT(GETDATE(), 'dd/MM/yyyy')
OrakelTO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD"T"HH24:MI:SS')TO_CHAR(SYSDATE, 'MM/DD/YYYY')TO_CHAR(SYSDATE, 'DD/MM/YYYY')

Zeitzonenoperationen

Aktuelle Zeitzone abrufen

DatenbankCode
MySQLTIMEZONE_NAME, @@time_zone
PostgreSQLcurrent_setting('timezone')
SQLiteN/A (keine Zeitzonenunterstützung)
SQL-ServerGETDATE(), DATENAME(TIMEZONE, SYSDATETIMEOFFSET())
OrakelSESSIONTIMEZONE, DBTIMEZONE

Zeitzone konvertieren

DatenbankCode
MySQLCONVERT_TZ('2024-01-01 12:00:00', 'UTC', 'America/New_York')
PostgreSQL'2024-01-01 12:00:00 UTC'::timestamptz AT TIME ZONE 'America/New_York'
SQLiteN/A
SQL-ServerGETDATE() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'
OrakelFROM_TZ(TIMESTAMP '2024-01-01 12:00:00', 'UTC') AT TIME ZONE 'America/New_York'

Zeitstempelarithmetik

Zeit hinzufügen/subtrahieren

Datenbank1 Tag hinzufügen1 Stunde abziehen
MySQLDATE_ADD(NOW(), INTERVAL 1 DAY)DATE_SUB(NOW(), INTERVAL 1 HOUR)
PostgreSQLNOW() + INTERVAL '1 day'NOW() - INTERVAL '1 hour'
SQLitedatetime('now', '+1 day')datetime('now', '-1 hour')
SQL-ServerDATEADD(day, 1, GETDATE())DATEADD(hour, -1, GETDATE())
OrakelSYSDATE + 1SYSDATE - (1/24)

Differenz berechnen

DatenbankTage zwischen
MySQLDATEDIFF('2024-01-15', '2024-01-01')
PostgreSQL'2024-01-15'::date - '2024-01-01'::date
SQLitejulianday('2024-01-15') - julianday('2024-01-01')
SQL-ServerDATEDIFF(day, '2024-01-01', '2024-01-15')
OrakelTO_DATE('2024-01-15') - TO_DATE('2024-01-01')

Best Practices

1. Zeitstempel in UTC speichern

Speichern Sie Zeitstempel immer im UTC-Format und konvertieren Sie sie nur in die Ortszeit, wenn sie Benutzern angezeigt werden.

-- Good: Store in UTC
CREATE TABLE events (
    id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Better: Explicit UTC
CREATE TABLE events (
    id INT,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

2. Verwenden Sie geeignete Datentypen

AnwendungsfallEmpfohlener Typ
UTC-SpeicherTIMESTAMP WITH TIME ZONE
Nur OrtszeitTIMESTAMP WITHOUT TIME ZONE
Unix-ZeitstempelBIGINT (für Portabilität)
Nur DatumDATE

3. Gehen Sie richtig mit Zeitzonenkonvertierungen um

-- PostgreSQL example
SELECT 
    created_at AT TIME ZONE 'UTC' AS utc_time,
    created_at AT TIME ZONE 'America/New_York' AS ny_time,
    created_at AT TIME ZONE 'Asia/Shanghai' AS shanghai_time
FROM events;

Verwandte Tools