我試圖創建一個列表,我被困住了。 因此,我有一個表,其中包含一個包含日期的Unix時間戳的start_date字段。 我試圖查詢表格並從時間戳中提取日期,那麼任何具有該日期的結果都將在該日下等。幾乎就像列表視圖中的事件一樣。SQL查詢時間戳日期字段,並按日期分組所有結果
我正在用PostgreSQL和PHP來做這件事。不知道如何編寫該查詢。但是,我發現PostgreSQL中的extract,date_part等函數仍然不確定如何獲取正確的查詢。
任何幫助或例子,將不勝感激。
我試圖創建一個列表,我被困住了。 因此,我有一個表,其中包含一個包含日期的Unix時間戳的start_date字段。 我試圖查詢表格並從時間戳中提取日期,那麼任何具有該日期的結果都將在該日下等。幾乎就像列表視圖中的事件一樣。SQL查詢時間戳日期字段,並按日期分組所有結果
我正在用PostgreSQL和PHP來做這件事。不知道如何編寫該查詢。但是,我發現PostgreSQL中的extract,date_part等函數仍然不確定如何獲取正確的查詢。
任何幫助或例子,將不勝感激。
最簡單的從Unix時間戳提取date
/最快的方式:
SELECT to_timestamp(my_epoch_ts)::date;
實施例:
SELECT to_timestamp(1349118398)::date
結果:
2012-10-01
這是利用to_timestamp()
函數,然後是cast to date: ::date
。
更多細節及在this recent related answer末鏈接。
你們倆都給了我需要的部分去做我需要的東西。你幫助了這個問題,Arjun舉了一個寫它的例子。我只能接受一個,因爲我確實說過查詢的幫助,我會接受你的答案。 –
@Pjack:你總是可以高興,所以阿爾瓊也得到了一些滿足。 –
date('d M Y', $timestamp);
應該給你特定的UNIX時間戳的日期,月份和年份。
如果您希望在列表視圖中使用start_date
字段(升序或降序)對數據庫順序運行select
查詢,並在$ row中獲取它。然後,你處理由一個記錄一個內循環,這樣做:
$prevDate = ' ';
$currentDate = ' ';
for each ($row) //however it goes
{
$currentDate = date('d M Y',$row['start_date']);
if($prevDate != $currentDate)
{
echo "Day : ".$currentDate;
}
echo $row['other-fields'];
$prevDate = $currentDate;
}
然而,PostgreSQL支持date
數據類型,並使用應該在你的最終簡化事情。
http://www.postgresql.org/docs/8.2/static/datatype-datetime.html
謝謝,但不一定必須完全相同才能生效。這就是爲什麼我試圖獲得實際日期,因爲它是在一個時間戳,它將下降到毫秒。他們中的任何一個都不會是確切的時間,但他們可能在同一天。這就是爲什麼我想按日期提取日期和列表(組),然後是當天發佈的所有內容。 –
他們不需要相同。這也可以,因爲我比較了只保存日期的$ currentDate和$ prevDate(已使用date('d M Y',$ timestamp)'從unix時間戳轉換而來)。因此,秒或小時的差異不會影響代碼的執行。並且'date()'PHP函數爲您提供了更好的靈活性,以便您也希望顯示UNIX時間戳。 http://php.net/manual/en/function.date.php –
酷,thx的解釋。 –
爲什麼在pgsql具有完美的時間戳數據類型時使用UNIX時間戳? –
與發佈FROM_UNIXTIME()的距離非常近,直到看到該標籤爲止;/ – wesside