2011-03-16 76 views
2

在mysql表中,存儲了時間戳的值(如1265138145)。 我想要的是顯示屬於這些時間戳的日期(例如27/2/2011,10/3/2011,15/3/2011,16/03/2011等)。這可能嗎? (但僅顯示一個時間的時間,例如,如果有1265138145和1265138140然後僅顯示一個時間的時間 - 這是16/3)Mysql select - 獲取時間戳的日期

+0

看看PHP的date()函數 – 2011-03-16 21:12:02

回答

2

有各種各樣的這樣做,FROM_UNIXTIME命令可能是最簡單的方法。

例如:SELECT FROM_UNIXTIME(<timestamp field>, '%d/%m/%Y');

我不知道你的意思「只顯示一次日期」,但在必要的列使用DISTINCT應該幫助什麼。

也就是說:SELECT DISTINCT(FROM_UNIXTIME(<timestamp field>, '%d/%m/%Y'));可能是你所需要的。

+0

而downvote是由於? – 2011-03-16 21:21:37

+0

我將使用這種方法。實際上,我想要做的是顯示聊天消息的日誌。因此,用戶可以看到何時(日期+月)發送了消息。 (像MSN Messenger的聊天記錄)。謝謝! – 2011-03-16 21:26:13

+0

@Man_E酷 - 希望它順利。 :-) – 2011-03-16 21:29:06

1

從內的MySQL,使用ADDDATE和間隔的unixtimestamp秒到時元,例如

select adddate('1970-01-01', interval 1265138145 second) 

則僅顯示一個時間日期

使用DISTINCT在查詢中,例如

select distinct date(adddate('1970-01-01', interval 1265138145 second)) 
from tbl .. 

以上返回兩次查詢的列作爲一個日期時間值,您可以在PHP應用默認格式設置。


注意有關使用FROM_UNIXTIME - 你得到你的本地UTC偏移添加的時間,這是不可能是你想要的,除非該數據被擺在首位使用UNIX_TIMESTAMP填充。

FROM_UNIXTIME:返回UNIX_TIMESTAMP參數的表示如在值「YYYY-MM-DD HH:MM:SS」或YYYYMMDDHHMMSS.uuuuuu格式,取決於功能是否在一個字符串或數值使用上下文。該值表示在當前時區

+2

使用FROM_UNIXTIME有什麼問題? (你的方法似乎有些遲鈍。) – 2011-03-16 21:14:59

+1

@mid - 查看有關從FROM_UNIXTIME – RichardTheKiwi 2011-03-16 21:16:54

+0

+1的註釋更新的答案對於時區相對狡猾。:-) – 2011-03-16 21:36:39

0
<?php 
    print date("d/m/Y", $timestamp); 
?> 

http://us.php.net/manual/en/function.date.php

+1

在PHP中這樣做是不必要的 - 爲什麼不直接在MySQL中轉換? – 2011-03-16 21:14:19

+0

他用PHP標記了他的問題,這就是爲什麼我假定他想使用PHP。無需投我們的迴應 – dearlbry 2011-03-16 21:26:05

+0

我低估了,因爲沒有必要在PHP中這樣做,並且您的答案不能解決OP對不同日期的要求。 – 2011-03-16 21:28:08

0

獲取你的數據和只使用date()功能。

echo date('d/m/Y', $row['date']); 
+1

在PHP中這樣做是不必要的 - 爲什麼不只是在MySQL中轉換? – 2011-03-16 21:13:36

+0

在PHP中使用時間戳更加靈活。 – hsz 2011-03-16 21:24:06

+0

它如何更靈活?另外,您的答案如何解決不同日期的需求?你打算在PHP中這樣做嗎? – 2011-03-16 21:24:48