2016-09-18 3 views
0

私は、MySQLのプラットフォーム固有のクエリを持っている:mysql-platform固有のクエリをプラットフォーム以外のものに変換するには?

SELECT month(from_unixtime(s.date)) AS month, count(s.id) AS blah, s.status 
    FROM Something s 
    WHERE s.date between unix_timestamp($blah1) and unix_timestamp($blah2) 
    GROUP BY s.status, month 

私はいくつかのMySQLのプラットフォームにmonthfrom_unixtimeunix_timestampなどの特定のコマンドを使用していました。 Postgresでも動作するようにクロスプラットフォーム互換にするためにこのクエリを書き直すにはどうしたらいいですか?

+1

回答:はい、できます! – wildplasser

+0

コメントを迷惑にしないでください!私はクエリを書き直す方法を尋ねた。 – user4271704

+0

BTW: 'unix_timestamp($ blah)とunix_timestamp($ blah)の間のs.dateは'完全なナンセンスです。 ( ''どこのs.date = unix_timestamp($ blah) 'も同じです) – wildplasser

答えて

1

あなたが列dateに「Unixエポック」値を格納していると仮定すると、次のように動作するはずです:ダブル(または整数)と

SELECT extract(month from to_timestamp(s.date)) AS month, 
     count(s.id) AS blah, 
     s.status 
FROM Something s 
WHERE s.date between to_timestamp($blah1) and to_timestamp($blah2) 
GROUP BY s.status, month 

to_timestamp()をパラメータが適切なタイムスタンプにUnixエポックに変換します。

本当の疑問があります:なぜあなたは適切なtimestampデータタイプを使用していませんか?

+0

私はPHPのtime()でlinuxタイムスタンプを使用しています。それは適切なタイムスタンプではありませんか?適切なタイムスタンプで正確にはどういう意味ですか?あなたは日付()を意味しますか? – user4271704

+0

タイムスタンプのサンプルフォーマットをどうしたらいいですか? – user4271704

+0

to_timestampとextractとmonthはpostgresプラットフォーム固有ですか? – user4271704

関連する問題