"12-Mar-2011"
、などの文字列形式(varchar)で保存された日付の列を含むデータベースが"11-Apr-2012"
ありました.Djangoでこれらの日付を比較する方法はありますか?
ではmodels.py
、列は文字列形式として定義されています。例えば:
startdate = models.CharField(max_length=11)
ここで、これらの日付を日付と比較する必要があります。どんな助けでも大歓迎です。
"12-Mar-2011"
、などの文字列形式(varchar)で保存された日付の列を含むデータベースが"11-Apr-2012"
ありました.Djangoでこれらの日付を比較する方法はありますか?
ではmodels.py
、列は文字列形式として定義されています。例えば:
startdate = models.CharField(max_length=11)
ここで、これらの日付を日付と比較する必要があります。どんな助けでも大歓迎です。
に、次のようにオブジェクト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_date
はdatetime
、通常の比較を行うために使用できるオブジェクトです。
これはあなたが探している答えではありませんが...
タイプを使用するように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 日付として取得する生のクエリを実行します。おそらく、それを使用して、実行しようとしているものを何でも達成できます。