按照documentation:
的日期和時間函數使用IS0-8601日期和時間 格式的子集。 date()函數以這種格式返回日期: YYYY-MM-DD。 time()函數將時間返回爲HH:MM:SS。 datetime()函數返回「YYYY-MM-DD HH:MM:SS」。 julianday() 函數返回Julian日 - 從中午12時47分開始的天數在格林威治 中的天數。 (普萊爾格里曆)。 strftime()例程返回根據指定爲第一個參數的 格式字符串格式化的日期。格式字符串 支持來自標準C庫的strftime() 函數中的最常見替換以及兩個新替換(%f 和%J)。以下是有效的strftime的完整列表() 換人:
的時間數據類型的格式必須爲YYYY-MM-DD HH:MM:SS,在Qt(因此PyQt的),我們可以使用ToString函數得到它:
QDateTime.toString("yyyy-MM-dd hh:mm:ss")
例子:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtSql import *
import sys
def createConnection():
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('memory')
if not db.open():
QMessageBox.critical(None, qApp.tr("Cannot open database"),
qApp.tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information "
"how to build it.\n\n"
"Click Cancel to exit."),
QMessageBox.Cancel)
return False
query = QSqlQuery()
query.exec_("create table test(id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, dt DATETIME default current_timestamp)")
query.exec_("insert into test (dt) values('2007-01-01 10:00:00')")
query.exec_("insert into test (dt) values('2008-01-01 10:00:00')")
query.exec_("insert into test (dt) values('2009-01-01 10:00:00')")
query.exec_("insert into test (dt) values('2010-01-01 10:00:00')")
return True
class Widget(QWidget):
def __init__(self, change_cursor=True, parent=None):
QWidget.__init__(self, parent=parent)
layout = QHBoxLayout(self)
self.fromDateTE = QDateTimeEdit()
self.toDateTE = QDateTimeEdit()
layout.addWidget(self.fromDateTE)
layout.addWidget(self.toDateTE)
btn = QPushButton("Select")
layout.addWidget(btn)
btn.clicked.connect(self.onClick)
def onClick(self):
_from = self.fromDateTE.dateTime().toString("yyyy-MM-dd hh:mm:ss")
_to = self.toDateTE.dateTime().toString("yyyy-MM-dd hh:mm:ss")
sql = "SELECT * from test WHERE dt BETWEEN datetime('{}') AND datetime('{}')".format(_from, _to)
query = QSqlQuery(sql)
while query.next():
print(query.value(1))
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
if not createConnection():
sys.exit(1)
w = Widget()
w.show()
sys.exit(app.exec_())
如果我們把日期如圖所示如下圖,我們得到如下圖所示的結果。
截圖:
輸出:
2008-01-01 10:00:00
你能解釋一下你怎麼SQLite中創建的表? – eyllanesc
我使用了開源免費軟件「DB Browser for SQLite」工具來創建數據庫及其模式。我有一個python程序,我經常運行將數據添加到數據庫。 –
試試我的答案,如果你不忘記標記爲正確的請。 – eyllanesc