Python中操作MySQL中timestamp時間屬性
阿新 • • 發佈:2019-02-09
對於相比較某個時間屬性在某個範圍的問題:
unix_timestamp 函式可以接受一個引數,也可以不使用引數。它的返回值是一個無符號的整數。不使用引數,它返回自1970年1月1日0時0分0秒到現在所經過的秒數,如果使用引數,引數的型別為時間型別或者時間型別的字串表示,則是從 1970-01-01 00:00:00 到指定時間所經歷的秒數。有了這個函式,就可以很自然地把時間比較轉換為一個無符號整數的比較。
例如,判斷一個時間是否在一個區間內
unix_timestamp( time ) between unix_timestamp( 'start ') and unix_timestamp( 'end' )
NO1:在execute(sql)中就篩選時間的屬性條件:
1.timestamp屬性值createTime與時間表示的字串startdate的比較問題:
將字串和timestamp屬性值都要轉化為同一型別的時間,再做比較
startdate = '2013-12-24'
UNIX_TIMESTAMP(createTime) >= UNIX_TIMESTAMP(startdate )
sql = "select * from t_open_id where UNIX_TIMESTAMP(createTime) < UNIX_TIMESTAMP('"+ "2013-12-12" +"')"
注意這樣也行:startdate = ‘2014-08-08 12:23:02’curxor.execute(sql)
2.其他情況有待進一步的完善
NO2:在execute中就不用新增時間篩選條件,在返回之後再做篩選:
execute索引過之後得到一個遊標,同時利用遊標去篩選時間屬性合適的元組,同時這時的比較是在Python中比較的,而非在是MySQL資料庫中比較,可以用到Python的時間比較法則,比如自己擅長的datetime模組。前提是MySQL的時間屬性timestamp返回到Python中會自動轉化為datetime屬性
具體例子為:
datestart = datetime.datetime(year=2013,month=12,day = 12) sql = "select * from t_open_id where createTime is not null" cur.execute(sql) count = 0 for row in cur: if row[4]<datestart: #用元組陣列的用法提取時間的屬性,得到的是datetime屬性的值,從而作比較來達到時間的篩選 print row count += 1