簡體   English   中英

SQlite3 和 python 中的日期時間對象

[英]datetime objects in SQlite3 and python

嘗試使用 python 和 sqlite3 在我的數據庫項目中存儲日期時間。 這是我到目前為止...

import sqlite3

def connect():
    conn = sqlite3.connect("road_works.db")
    cur = conn.cursor()
    cur.execute("""CREATE TABLE IF NOT EXISTS road_works(id INTEGER PRIMARY 
        KEY, location TEXT, client TEXT, start_date TEXT, end_date TEXT)""")
    conn.commit()
    conn.close()


def insert(location, client, start_date, end_date):
    conn = sqlite3.connect("road_works.db")
    cur = conn.cursor()
    cur.execute("INSERT INTO road_works VALUES (NULL, ?, ?, ?, ?)",
               (location, client, start_date, end_date))
    conn.commit()
    conn.close()

insert("M25", "Lindor", "2019-03-16 20:00", "2019-07-16 06:00")

此時數據庫將 start_date 和 end_date 作為文本。 我想將其更改為日期,然后我可以開始進行計算,例如倒數天/夜直到工作完成等。用戶還將輸入日期和時間,因此我無法使用 datetime.datetime.now() /today() 我一直在閱讀日期時間,但它比我習慣的更先進,如果有人能更好地解釋它,我將不勝感激。

幾天來我一直在尋找解決方案,這是我的第一個項目,它可能有點超出我的范圍,但我感謝您的關注。

謝謝 :)

固定的! 謝謝您的幫助!

def insert(location, client, start_date, end_date):
    conn = sqlite3.connect("road_works.db")
    cur = conn.cursor()
    cur.execute("INSERT INTO road_works VALUES (NULL, ?, ?, ?, ?)",
                (location, client, start_date, end_date))
    start_date = datetime.strptime(start_date, "%Y-%m-%d %H:%M")
    end_date = datetime.strptime(end_date, "%Y-%m-%d %H:%M")
    conn.commit()
    conn.close()

sqlite 中的日期沒有本機數據類型 我鏈接到的手冊建議(參見 2.2)三種可能的日期存儲方式:

  • 文本(ISO 8601 字符串)
  • REAL(儒略日數)
  • 整數(Unix 時間)

我的建議是使用 ISO 8601 格式,因為它是標准化且明確的。 此外,與替代方案相反,它是人類可讀的,無需轉換。 並且datetime對象具有與字符串之間的標准轉換方法。

請參閱以下示例:

In [1]: from datetime import datetime                                                                    

In [2]: now = datetime.now()                                                                             

In [3]: now                                                                                              
Out[3]: datetime.datetime(2019, 1, 3, 14, 53, 38, 596477)

In [4]: string = now.isoformat()                                                                         

In [5]: string                                                                                           
Out[5]: '2019-01-03T14:53:38.596477'

In [6]: datetime.fromisoformat(string)                                                                   
Out[6]: datetime.datetime(2019, 1, 3, 14, 53, 38, 596477)

您可以使用datetime.strtime將字符串轉換為 datetime 對象

例如

from datetime import datetime
datetime_object = datetime.strptime('2019-03-16 20:00', '%Y-%m-%d %H:%M')

所以

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM