MySQL은 n 일 전 날짜를 타임 스탬프로 가져옵니다.


99

MySQL에서 30 일 전과 같은 타임 스탬프를 어떻게 얻을 수 있습니까?

다음과 같은 것 :

select now() - 30

결과는 타임 스탬프를 반환해야합니다.


DATE_SUB 이후 인 것 같습니다 .
joeslice

1
타임 스탬프의 형식은 무엇입니까? MySQL DATE 함수를 사용하는 사람들이 익숙한 형식과 UNIX 스타일 타임 스탬프가 있습니다.
joebert

MySQL 타임 스탬프 이후입니다.
Ben Noland

답변:


181

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
첫 번째 쿼리와 두 번째 쿼리의 차이점은 무엇입니까?
Codler

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(_,_,_));

유닉스 타임 스탬프 또는 :

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.