18

我有带有DateTimeField列的模型。

我正在尝试通过 sql 查询将具有数据库current_time值的行直接插入到表中。

我对 MySQL 数据库的 sql 查询如下:

INSERT INTO MyTable (..., my_datetime, ...) VALUES (..., current_time, ...)

并得到:

RuntimeWarning:DateTimeField ModelName.field_name 在时区支持处于活动状态时收到了一个天真的日期时间 (2014-01-09 22:16:23)。

如何通过sql查询将当前时间直接插入表中而不发出警告?

4

3 回答 3

42

除了 falsetru 的回答,如果日期时间已经创建,您可以将其转换为时区感知:

from django.utils import timezone
my_datetime = timezone.make_aware(my_datetime, timezone.get_current_timezone())
于 2014-01-10T11:50:58.140 回答
24

使用django.utils.timezone.now而不是datetime.datetime.now.

from django.utils import timezone
current_time = timezone.now()
于 2014-01-10T08:00:07.643 回答
3

您还可以使用localizefrom使 datetime 时区感知,如此pytz所述。

世界标准时间:

import pytz
dt_aware = pytz.utc.localize(dt_naive)

任何其他时区:

import pytz
tz = 'Europe/Berlin' #or whaterver timezone you want
dt_aware = pytz.timezone(tz).localize(dt_naive)

这里是区列表。

于 2016-12-13T10:03:31.440 回答