1. 程式人生 > >Python中操作MySQL中timestamp時間屬性

Python中操作MySQL中timestamp時間屬性

對於相比較某個時間屬性在某個範圍的問題:

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" +"')"
     curxor.execute(sql)
       注意這樣也行:startdate =  ‘2014-08-08 12:23:02

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