Automatischer Zeitstempel in SQLite

Junaid khan 21 Juni 2023
  1. Zeitstempel zur SQLite-Datenbank hinzufügen
  2. Verwenden Sie in SQLite den Datentyp Datetime oder Timestamp
  3. Rufen Sie DateTime aus der SQLite-Tabelle ab
  4. Abrufen von Datum und Uhrzeit in SQLite
  5. Textspeicherklasse für SQLite-Datum und -Zeit
Automatischer Zeitstempel in SQLite

In der Sprache C# verwenden wir die SQLite-Datenbank, um Werte aus der Datenbank zu speichern und abzurufen. Die Datenbank kann verschiedene Tabellen mit Zeilen und Spalten enthalten. Sobald wir der Tabelle einen neuen Datensatz hinzufügen, wird eine neue Zeile mit einem Zeitstempel als null hinzugefügt. Wenn wir einen Zeitstempel benötigen, können wir sehen, wann eine neue Zeile oder bestimmte Informationen zur Tabelle mit datums- und zeitspezifischem Format hinzugefügt werden. Um einen automatischen Zeitstempel zu erhalten, rufen wir Informationen als Datentyp Datetime oder Datum und Uhrzeit als separate Informationen ab.

Zeitstempel zur SQLite-Datenbank hinzufügen

Die beste Lösung, um der SQLite-Datenbank einen Zeitstempel hinzuzufügen, besteht darin, beim Erstellen der Tabelle in der Datenbank ein Feld mit Timestamp mit dem Datentyp DATETIME hinzuzufügen. Der Datentyp des Timestamp sollte in der SQLite-Datenbank DateTime sein.

CREATE TABLE NameOfTheTable(
    myID INTEGER PRIMARY KEY,
    First_Name TEXT,
    Other FIELDS (if needed),
    Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);

Ausgang:

Creates the table with provided fields and last field timestamp

Wenn es einen neuen Eintrag in dieser Tabelle gibt, fügt die Tabelle eine neue Zeile mit den bereitgestellten Informationen und der aktuellen Uhrzeit in das Feld TimeStamp ein. Dieses Feld kann jedoch mit NULL gefüllt werden, wenn der Benutzer es explizit auf einen NULL-Wert setzt.

Beispielsweise möchten wir mit den folgenden Befehlen verschiedene Zeilen in die oben erstellte Tabelle einfügen.

INSERT INTO NameOfTheTable(First_Name, sqltime) VALUES('case1', '2020-07-28T15:36:56.200');
INSERT INTO NameOfTheTable(First_Name, sqltime) VALUES('case2', '2020-10-28T13:40:02.200');
# here, the time value will be recorded as NULL
INSERT INTO NameOfTheTable(First_Name) VALUES('case3');

Jetzt müssen wir den Befehl SELECT verwenden, um alle Datensätze in der Tabelle anzuzeigen.

SELECT * FROM NameOfTheTable;

Ausgang:

1:case1:2020-07-28T15:36:56.200
2:case2:2020-07-28T15:36:56.200
3:case3:2022-11-11 05:38:20

Verwenden Sie in SQLite den Datentyp Datetime oder Timestamp

Wenn wir in SQLite die Änderungen innerhalb des Datensatzes nachverfolgen müssen, werden diese Datensätze mit dem Zeitstempel-Datentyp aktualisiert. Wenn wir also eine bestimmte Zeit mit einem Feld wünschen, müssen wir den Datentyp DateTime für ein Feld verwenden.

Wir sollten immer den Datentyp DateTime auswählen, wenn ein Vergleich zwischen dem UNIX-Zeitstempel oder einem nativen SQLite-Feld DateTime stattfindet, da wir die folgenden Berechnungen mit dem nativen Datentyp DateTime durchführen können.

SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)

Mit diesem Befehl können wir auch das Format von DateTime auf den UNIX-Zeitstempel ändern.

SELECT UNIX_TIMESTAMP(my_datetime)

Rufen Sie DateTime aus der SQLite-Tabelle ab

Wenn wir den Datentyp DateTime in die SQLite-Datenbank einfügen, wird dieser zuerst in den Typ String konvertiert und dann in die Tabelle eingefügt. Wenn wir die Daten des Datentyps DateTime abrufen, konvertiert das sqlite3-Modul sie ebenfalls zuerst in einen String.

Nehmen wir ein Beispiel, um das Konzept zu verstehen. Die Funktion insertQuery() nimmt drei Parameter als id (Primärschlüssel wird automatisch erhöht, wenn der Tabelle ein neuer Datensatz hinzugefügt wird), my_name (nicht leeres Zeichenfolgenfeld zum Speichern von Namen) und schließlich join_date (mit dem Datentypformat timestamp ).

Außerdem gibt dieses Programm die Uhrzeit nicht im String-Format zurück, sondern im Timestamp-Format.

import datetime
import sqlite3


def insertQuery(id, my_name, joiningDate):
    try:
        sqliteConnection = sqlite3.connect(
            "SQLite.db", detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES
        )
        cursor = sqliteConnection.cursor()
        print("SQLite Database is connected.")

        # query to create a new table with three fields
        sqlite_create_table_query = """CREATE TABLE new_table (
                                       id INTEGER PRIMARY KEY,
                                       my_name TEXT NOT NULL,
                                       joiningDate timestamp);"""

        cursor = sqliteConnection.cursor()
        cursor.execute(sqlite_create_table_query)

        # insert the new table information here
        sqlite_insert_with_param = """INSERT INTO 'new_table'
                          ('id', 'my_name', 'joiningDate')
                          VALUES (?, ?, ?);"""

        data_tuple = (id, my_name, joiningDate)
        cursor.execute(sqlite_insert_with_param, data_tuple)
        sqliteConnection.commit()
        print("New record added successfully \n")

        # to get the timestamp information from the table
        sqlite_select_query = (
            """SELECT my_name, joiningDate from new_table where id = ?"""
        )
        cursor.execute(sqlite_select_query, (1,))
        records = cursor.fetchall()

        # the return type of datetime is not string now.
        for row in records:
            developer = row[0]
            joining_Date = row[1]
            print(developer, " joined on", joiningDate)
            print("Date type is ", type(joining_Date))

        cursor.close()

    # if an exception is found in sqlite version 3.
    except sqlite3.Error as error:
        print("Error with SQLite database", error)
    finally:
        if sqliteConnection:
            sqliteConnection.close()
            print("Closed connection for SQLite database.")


insertQuery(0, "NewName", datetime.datetime.now())

Ausgang:

SQLite Database is connected.
New record added successfully

NewName  joined on 2019-06-28 20:57:32.352790
Date type is <class 'datetime.datetime'>
Closed connection for SQLite database.

Abrufen von Datum und Uhrzeit in SQLite

Für Unix-Zeitstempel kann die Funktion in SQLite DATETIME() mit einem Argument unixepoch verwendet werden, um das tatsächliche Datum und die Uhrzeit zu berechnen. Alternativ können wir die Funktion DATE() verwenden, um nur die Datumsinformationen zu erhalten, und die Funktion TIME(), um den Zeitabschnittsteil zurückzugeben.

Holen Sie sich das Datum und die Uhrzeit

SELECT DATETIME(1793956207, 'unixepoch');

Ausgang:

2022-11-06 10:09:03

Holen Sie sich das Datum

SELECT DATE(1793956207, 'unixepoch');

Ausgang:

2022-11-06

Holen Sie sich die Zeit

SELECT TIME(1793956207, 'unixepoch');

Ausgang:

10:09:03

Textspeicherklasse für SQLite-Datum und -Zeit

In SQLite verwenden wir die integrierten Methoden, um Datum und Uhrzeit in der Datenbank zu behandeln. Im Gegensatz zu SQLite, wo sie über integrierte Klassen verfügen, um mit ihnen zu interagieren, verfügt die SQLite-Datenbank über integrierte Funktionen für Datum und Uhrzeit zu ihrer Unterstützung.

Wenn wir die Speicherklasse TEXT zum Einstellen von Datum und Uhrzeit in der SQLite-Datenbank verwenden, müssen wir das folgende Format verwenden.

YYYY-MM-DD HH:MM:SS.SSS

Dieses Format ergibt 2019-02-02 11:21:08.321.