3

"12-Mar-2011"、などの文字列形式(varchar)で保存された日付の列を含むデータベースが"11-Apr-2012"ありました.Djangoでこれらの日付を比較する方法はありますか?

ではmodels.py、列は文字列形式として定義されています。例えば:

startdate = models.CharField(max_length=11)

ここで、これらの日付を日付と比較する必要があります。どんな助けでも大歓迎です。

4

4 に答える 4

3

に、次のようにオブジェクトmodels.pyを返すメソッドを追加します。datetime

from datetime import datetime as dt

class SomeModel(models.Model):
    # other fields

    def startdate_as_date(self):
        return dt.strptime(self.startdate,'%d-%b-%Y')

一部のエラー チェック (startdate が設定されていることの確認など) と、日付が有効な日付かどうかのチェックを省略しました。これらは後で追加する必要があります。

今、あなたはこれを行うことができます:

foo = SomeModel.objects.get(pk=1)
the_date = foo.startdate_as_date()

Nowthe_datedatetime、通常の比較を行うために使用できるオブジェクトです。

于 2013-03-09T13:36:08.000 に答える
0

これはあなたが探している答えではありませんが...

タイプを使用するようにDBを移行する必要がありますmodels.DateField

それはさておき、

objects = YourModel.objects.raw("""
    SELECT 
        STR_TO_DATE(your_string_date_field, '%e-%b-%Y') AS a_mysql_date_field,
        *
    FROM your_table
    """)

文字列の日付を実際の mysql 日付として取得する生のクエリを実行します。おそらく、それを使用して、実行しようとしているものを何でも達成できます。

于 2013-03-09T13:43:06.477 に答える