2015-12-24 28 views
5

Microsoft SQL Server 2012以降では、単一のselect文でdatetime値をUnixタイムスタンプに変換できますか?もしそうなら、それはどうやって行えますか? UNIXタイムスタンプに日時を変換DatetimeをUnixタイムスタンプに変換する

+0

をあなたはあなたの質問への答えはイエスである、これまで – Ram

+0

を試してみましたが、何を追加してください。あなたの実際の質問は何ですか? –

+0

私はMichaelの質問を編集しました。 –

答えて

16

は簡単ですが、次のように入力しやすいエラーが含まれます。

@datetimeは、変換したい日時の値である
@timestamp=DATEDIFF(second,{d '1970-01-01'},@datetime) 

。 {d 'yyyy-mm-dd'}表記はODBCエスケープシーケンスです。

機能:

CREATE FUNCTION UNIX_TIMESTAMP (
@ctimestamp datetime 
) 
RETURNS integer 
AS 
BEGIN 
    /* Function body */ 
    declare @return integer 

    SELECT @return = DATEDIFF(SECOND,{d '1970-01-01'}, @ctimestamp) 

    return @return 
END 

は@Ousman以下のように今それを試してみてください:

SELECT UNIX_TIMESTAMP(GETDATE()); 
+0

ありがとう、私はこの作品が表示されます。 –

+0

簡素化しない理由:DATEDIFF(SECOND、 '1970-01-01'、@ctimestamp)を選択しますか?またはDATEDIFFを選択します(秒、変換(DATETIME、 '1970-01-01'、121)、@ctimestamp) 日付のローカライズ? – onupdatecascade

+0

Khaledとonupdatecascadeに感謝します。両方のソリューションが動作します。私は同意する、あなたの1つはより簡単であり、機能の作成を必要としない。 –