2010-07-09 2 views
1

Я хочу получить временную метку из базы данных SQL с соответствующим форматированием. Это частичный код, я использую:Как получить метку времени с правильным форматированием из базы данных sql с помощью python

import MySQLdb 

def connectDB(self): 
    global cursor 
    DATABASE = MySQLdb.connect(
     host = self.HOST, 
     user = self.USER, 
     passwd = self.PASS, 
     db  = self.DB, 
     port = self.PORT, 
     ssl = self.SSL_SETTINGS 
     ) 

    cursor = DATABASE.cursor() 

def getLastReport(self): 
    sql = "SELECT timestamp FROM dataset Limit 0,1;" 
    self.connectDB() 
    cursor.execute(sql) 
    lastReport = cursor.fetchone() 
    return lastReport 

и последний отчет возвращается:

(datetime.datetime(2010, 7, 7, 19, 55),) 

Я хочу что-то вроде этого:

2010-7-7 19:55 

Я знаю, как изменить это в строку а затем переформатируйте его, но должен быть простой способ захватить отметку времени, чтобы она была отформатирована. также как можно захватить float или int или string, чтобы он уже был отформатирован, а затем попытался отформатировать его самостоятельно. Я новичок в sql, но должен быть способ правильно отформатировать данные, видя, что вам нужно объявлять типы данных при создании таблиц.

ответ

3

Вы можете использовать функцию mysql DATE_FORMAT, хотя это не проще, чем делать это на стороне Python. На самом деле он гораздо более ограничен, потому что fetchone возвращает строку Python вместо объекта datetime.

sql = "SELECT DATE_FORMAT(timestamp,"%Y-%m-%d %k:%i") FROM dataset Limit 0,1;" 

по сравнению к

adate=datetime.datetime(2010, 7, 7, 19, 55) 
adate.strftime('%Y-%m-%d %H:%M') 
# 2010-07-07 19:55 
+0

спасибо, adate.strftime ('% Y-% m-% d% H:% M') отформатирован так, как я хотел. – Richard

Смежные вопросы