MySQLはn日前の日付をタイムスタンプとして取得します


97

MySQLでは、たとえば30日前のタイムスタンプをどのように取得しますか?

何かのようなもの:

select now() - 30

結果はタイムスタンプを返すはずです。


DATE_SUBより後だと思います。
joeslice 2009

1
タイムスタンプの形式は?MySQLのDATE関数を操作する人が使い慣れているフォーマットがあり、UNIXスタイルのタイムスタンプがあります。
joebert 2009

私はMySQLタイムスタンプの後です。
ベンノーランド

回答:


179

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

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

5
(v1)DATE_SUBは、入力に応じてDATETIMEまたはSTRINGを返します。TIMESTAMP(v2)がTIMESTAMPタイプに強制しています。 dev.mysql.com/doc/refman/5.1/en/...
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 ) ) )

正の時間のみを返します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.