MySQL รับวันที่ n วันที่แล้วเป็นเวลาประทับ


100

ใน MySQL ฉันจะรับการประทับเวลาได้อย่างไรเมื่อ 30 วันก่อน

สิ่งที่ต้องการ:

select now() - 30

ผลลัพธ์ควรส่งคืนการประทับเวลา


ผมคิดว่าคุณหลังจากDATE_SUB
joeslice

1
การประทับเวลารูปแบบใด มีรูปแบบที่คนที่ทำงานกับฟังก์ชัน MySQL DATE คุ้นเคยและมีการประทับเวลาสไตล์ UNIX
joebert

ฉันตามเวลา MySQL Timestamp
Ben Noland

คำตอบ:


184

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

สำหรับการประทับเวลา 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.