2017-02-06 55 views
0

在我的數據庫表timestamp列的數據類型是longtext like this 1486335600.如何從MySQL的時間戳找到上個月的記錄?

如何編寫mysql select語句來檢索上個月的信息?

SELECT `timestamp` FROM `daily_deals` 
+0

你應該使用一個mysql日期類型來存儲這些信息,這將使得這個和將來的查詢變得更容易。 – jeroen

+0

,但它已經做了些什麼。我現在不允許改變數據類型 – shane

+0

@shane你能使用我的答案嗎?你需要改變什麼? –

回答

0

您應該嘗試下面的查詢來檢索上個月的信息。

SELECT `timestamp` FROM `daily_deals` WHERE date_created BETWEEN (CURRENT_DATE() - INTERVAL 1 MONTH) AND CURRENT_DATE(); 
+1

這個解決方案,date_created必須存在(不確定),並且不能是一個字符串(因爲OP說...) – Random

+0

它給了我一些錯誤在分析過程中發現了3個錯誤。 無法識別的關鍵字。 (在位置112的「CURRENT_DATE」附近) 意外的令牌。 (靠近「(」在位置124) 意外的標記(靠近「)」在位置125) – shane

+0

確保在數據庫表中添加了date_created字段。 –

0

你的時間戳保存爲UNIX時間戳,你可以用FROM_UNIXTIME()轉換爲日期/時間格式:

select from_unixtime(1486335600) 

上個月的信息將是這樣的:

select `timestamp` 
from `daily_deals` 
where 
    `timestamp` >= unix_timestamp(current_date - interval 1 month) 

但它取決於您的要求(例如,您現在可能需要整個1月份的數據,我們現在是在2月份,如果是這種情況,我們需要在where條件下稍加處理)

+0

是的,我想要得到整個一月份的數據,我嘗試這樣但它給了我一個錯誤從'daily_deals'選擇'timestamp' 其中 'timestamp'> ='1486335600'(current_date - interval 1 month); – shane

+0

@shane你可以試試'where timestamp> = unix_timestamp(current_date - interval 1 month)'? – fthiella

+0

確定它雖然工作,但如何從此提取上個月1486335600 – shane

0

from_unixtim()這個函數轉換日期你的價值煽動像2017年2月6日5點30分00秒所以可以簡單的你能在條件

 SELECT `timestamp` FROM `daily_deals` where 
FROM_UNIXTIME(timestamp) BETWEEN 2017-01-01 and 2017-01-31 

用這個日期你可以得到任何兩個日期之間的數據

+0

SELECT'timestamp' FROM'daily_deals'其中FROM_UNIXTIME(timestamp)BETWEEN 2016-01-01和2016-01-31這返回給我空結果集 – shane

+0

select FROM_UNIXTIME(timestamp)from daily_deals' limit 0,2運行這個查詢並告訴我結果是什麼 –

相關問題