Вы получили 00:00:00
как время часть, вероятно, потому, что кто-то вставить только дату без времени части. Смотрите результаты:
select current_date, current_timestamp;
вы получите:
"2013-03-07";"2013-03-07 08:31:59.098661+01"
При вставке или обновлении временной метки столбца только с датой, то время часть будет сокращена до 00:00:00
. Вы должны использовать current_timestamp
, если хотите дату, время и часовой пояс.
Преобразование такой даты для строки может быть выполнено как на стороне сервера, так и на стороне клиента. Существует много PostgreSQL datetime functions, PostgreSQL format functions, которые могут быть использованы, а также функции Python.
С:
select to_char(current_timestamp, 'DD.MM.YY HH12:MI:SS')
вы получите что-то вроде:
"07.03.13 08:40:50"
Lafada ответ охватывает Python форматирования объектов DateTime.
Если вы хотите, чтобы показать разницу между сейчас и некоторые даты и времени вы можете использовать PostgreSQL age()
функция:
select age(timestamp '2003-03-01');
результат:
"10 years 6 days"
, конечно, Python также может показать разницу между временными метками:
import datetime
dt_old = datetime.datetime.strptime('2001-12-31 22:33:44', '%Y-%m-%d %H:%M:%S')
dt_diff = (datetime.datetime.today() - dt_old)
print(dt_diff)
Мой результат:
4083 days, 10:16:14.140000
Благодарим за отличный ответ :) ..я не вставляю что-то в столбец timestamp, я сконфигурировал его так: добавлено TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() ' –
Функция postgreSQL' now() 'возвращает дату со временем, но в вашей декларации она будет использоваться только если кто-то не установил значение для этого столбца в инструкции INSERT. Вы должны искать INSERT в своем приложении. Также лучше использовать 'CURRENT_TIMESTAMP' вместо PostgreSQL: конкретный' now() '-' CURRENT_TIMESTAMP' будет работать с другими базами данных, которые я знаю. –