2009-07-08 38 views
70

MySQLでは、30日前にどのようにタイムスタンプを取得できますか?MySQLはタイムスタンプとして日付をn日前に取得します

ような何か:

select now() - 30 

結果がタイムスタンプを返す必要があります。

+1

タイムスタンプのどのような形式を返すのだろうか? MySQL DATEの機能を使い慣れている人々には、UNIXスタイルのタイムスタンプがあります。 – joebert

+0

私はMySQLタイムスタンプの後です。 –

答えて

138

DATE_SUBはあなたがタイムスタンプからの負の時間が必要な場合は、

mysql> SELECT DATE_SUB(NOW(), INTERVAL 30 day); 
2009-06-07 21:55:09 

mysql> SELECT TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 day)); 
2009-06-07 21:55:09 

mysql> SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 day)); 
1244433347 
+10

最初のクエリと2番目のクエリの違いは何ですか? – Codler

+1

私は上記の質問にも答えたいです。ありがとうございました。 – transilvlad

+4

(v1)DATE_SUBは入力に応じてDATETIMEまたはSTRINGを返します。 TIMESTAMP(v2)はそれをTIMESTAMP型に強制します。 http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add – jsh

3

あなたは使用することができます

SELECT unix_timestamp(now()) - unix_timestamp(maketime(_,_,_)); 
UNIXタイムスタンプの場合

か:

SELECT addtime(now(),maketime(_,_,_)); 

を標準MySQLの日付形式の場合。

0

を望むものに応じて、その一部を行います

mysql>SELECT now() , FROM_UNIXTIME(1364814799) , HOUR(TIMEDIFF(now() , FROM_UNIXTIME(1364814799))) , TIMESTAMPDIFF(HOUR , now() , FROM_UNIXTIME(1364814799)) 
2013-06-19 22:44:15  2013-04-01 14:13:19  1904 -1904 

この

TIMESTAMPDIFF(HOUR , now() , FROM_UNIXTIME(1364814799)) 

は負と正の値を返します。 、x> this_timestampを使用する必要がある場合

が、この

HOUR(TIMEDIFF(now() , FROM_UNIXTIME(1364814799))) 

は正、時間

関連する問題