2009-04-09 5 views
3

日時フィールドの月に基づいて集計計算を行いたいと思います。Djangoでデータベースからの集計計算の日付フォーマットを選択

私は現在のように日付をフォーマットするために余分な()関数を使用しています:

...extra(select="strftime('column', '%m/%Y') as t").values('t').annotate(SUM(foo)) 

、それはsqlite3のための素晴らしい作品。

sqlite3ではstrftime()を使用できますが、これはMySQLでは動作しません。 MySQLではdate_format()を使用できますが、sqlite3では動作しません。

これを両方のデータベースタイプで動作するように書き直すにはどうすればよいですか?

ほとんどの開発者は、devマシン上でsqlite3を使用し、prodサーバではMySQLを使用します。

ありがとうございます!

答えて

6

MySQLデータベースで次のコマンドを実行すると、転送機能が作成されます。

delimiter // 

create function strftime (d date, format varchar(255)) 
    RETURNS varchar(64) 
    LANGUAGE SQL 
    DETERMINISTIC 
    COMMENT 'synonym for date_format' 
    return date_format(d, format) ; 
// 
delimiter ; 
+1

ありがとうございます!私はまだそれを働かせていない。カスタムMySQLの機能の詳細はどこで確認できますか?私はここを見ましたが、あまり見つけられませんでした:http://dev.mysql.com/doc/refman/5.0/ad/adding-functions.html –

+0

それは働いています。あなたの例では、カスタム関数のparamsは、param_name data_typeのように順序付けする必要があります。 それは言うべきである:create function strftime(d datetime、format varchar(255)) ガイダンスのおかげで! –

+0

ええ、私はC/C++/Javaの型識別子とSQLの識別子型の間を行き来します。私は鞭打ちを受けたと思う。またはラッシュウィッシュ。 – tpdi