2009-06-30 10 views
3

UNIX_TIMESTAMP()は、ANSI標準のキーワードではありませんが、MySQL構文に追加されています。しかし、私は複数のDBをサポートしているので、UNIX_TIMESTAMP()を書くためにANSIの標準的な方法があります。UNIX_TIMESTAMP()のANSI標準

おかげ

答えて

2

私の知る限りでは、ありません。

すべてのデータベースでこれが異なって処理されます。

たとえば、Oracleには、手動のようなもので、タイムスタンプを生成する必要があります。MSSSQLで

SELECT (sysdateColumn - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400) AS alias FROM tableName; 

:pgSQLで

SELECT DATEADD(s, yourDateColumn, '19700101') AS alias FROM tableName 

SELECT date_part('epoch', timestampColumn) AS alias FROM tableName 

編集:AlexKuznetsov pointed outとすると、2つの全く異なるMySQLのUNIX_TIMESTAMP()機能を使用します。私は後者を上記の答えのためにUNIX_TIMESTAMP(date)(エポック変換のネイティブフォーマット用)と仮定しました。

+0

MSSQLには実際にGETUTCDATE()関数があります。 – Eric

+0

@Eric、私が覚えていることから、MSSQLのGETUTCDATE()はDATETIME型を返します。 – jason

+0

@jason:DATEADD()も同様です。この場合、DATEEDDではなくDATEDIFFが必要です。 – Eric

1

次が真であればあなたはUNIX_TIMESTAMP の定義に失敗しました: UNIX_TIMESTAMP(日付)は、「1970年1月1日午後12時00分○○秒」からの秒として引数の値を返します

をその後、DATEDIFF関数を使用します