2013-02-28 2 views
0

У меня есть база данных mysql, которая хранит временную метку в столбце varbinary, и моя цель состоит в том, чтобы преобразовать это значение в отметку времени unix, чтобы я мог выполнить промежуток времени между двумя временными интервалами.Python: преобразовать временную метку типа Varbinary для отметки времени unix

+---------+------------+-------------------+----------------+--------------------------+ 
| some_id | some_name | user_registration | some_count  | some_value_yes_no  | 
+---------+------------+-------------------+----------------+--------------------------+ 
| some_id | some_user | 20091129060140 |   2685 |      1 | 
+---------+------------+-------------------+----------------+--------------------------+ 

Здесь user_registration является MySQL VARBINARY (14), предположим, что после подключения и извлечения этих данных, у меня user_registration, хранящуюся в переменной со стороны Python,

... 
    timestamp = row['user_registration'] 

как можно преобразовать это к отметке времени unix, чтобы я мог сделать разницу во времени между другим штампом времени, подобным этому. Я посмотрел на http://docs.python.org/2/library/datetime.html, но я не мог найти такого примера.

ответ

3

Вы можете сначала преобразовать его в объект datetime, а затем в Unix-время, используя временной модуль.

import datetime 
import time 

user_reg_time = datetime.datetime.strptime("20091129060140", "%Y%M%d%H%m%S") 
epochs_time = time.mktime(user_time_reg.timetuple()) 

BTW, если вам просто нужно сравнить время, вам не нужно переводить в Unix-время; Python имеет встроенный объект timedelta. Это тоже будет работать:

import datetime 
import time 

user_reg_time = datetime.datetime.strptime("20091129060140", "%Y%M%d%H%m%S") 
if datetime.datetime.now() - user_reg_time > datetime.timedelta(weeks=4): 
    print "User was registered more than 4 weeks ago" 

Вы можете получить более подробную информацию о timedelta на Python официальных документах.

+0

мне нужно сделать разницу во времени между двумя временными интервалами, когда оба временных интервалов, как я уже упоминал, и хотят разница в днях –

+1

Преобразовать другое время в datetime, а также использование strptime. Затем вычтите их и сравните с помощью datetime.timedelta (days = ...) – sharjeel

1
>>> import time 
>>> 
>>> date_str = "20091129060140" 
>>> time_tuple = time.strptime(date_str, "%Y%m%d%H%M%S") 
>>> timestamp = time.mktime(time_tuple) 
>>> 
>>> print timestamp 
1259470900.0 
0

Если вы получите строку это будет следующим образом:

from datetime import datetime 
datetime.strptime(timestamp, '%Y%m%d%H%M%S'); 
Смежные вопросы