2014-05-19 192 views
0

我從CSV傾倒在那裏我有一列名TIME_STAMP,我使用VARCHAR轉換一列時間戳或日期時間和查詢時間間隔

我有兩件事情,我感到困惑的進口在數據庫中的最新現在,

1)欲能夠將此列轉換爲任一時間戳記或日期時間 當前格式爲dd /月/年H:M:S,但我讀到UNIX只接受- 的代替/。這是真的?

2)欲從數據庫中查詢的時間戳值,該值是使用上述

實施例列在一定時間範圍內的最高:上午7時和上午8時之間,它應該給我的時間戳這將是最接近8AM

請原諒我的問題,如果我的問題是模糊的,但我一直沒能找到與我的問題很多有關。我相信這會得到一些倒票,所以請善待。

回答

0

幾件事..首先看看這裏看到更多關於日期格式。 Insert current date in datetime format mySQL

第二,您應該更新表格以將/更改爲a - 。

使用STR_TO_DATE()轉換

,以獲得最新的日期,那麼就去做這個

SELECT MIN(date) FROM table -- // MIN() is used to get the most recent timestamp 
WHERE STR_TO_DATE(date, '%c/%e/%Y %r') BETWEEN $start AND $end 

起點和終點將是你的起始日期和結束日期


如果你只是想檢查當天使用時間:

SELECT MIN(date) FROM table -- // MIN() is used to get the most recent timestamp 
WHERE TIME(STR_TO_DATE(date, '%c/%e/%Y %r')) BETWEEN $start AND $end 

根據我之前的建議,您應該更新這樣的表格。

UPDATE table 
SET date = STR_TO_DATE(date, '%c/%e/%Y %r') 

類似的東西來修復它...這將使你的querys那麼複雜:)

+0

我需要它爲某一時間段,將這項工作爲呢? – Bazinga777

+0

是的,如果您將起始日期作爲起始變量並將結束日期作爲結束變量 –

+0

抱歉,我的問題可能不正確。我想從一定的時間間隔查詢數據,例如:每天從上午7點到上午8點,並希望從最接近上午8點的時間戳獲取數據,因此我可以查詢SELECT MIN(date)FROM表 WHERE date BETWEEN 7:0:0和7:59:59 – Bazinga777

0

1)是的,這是真的。日期需要是YYYY-mm-dd H:M:S。 (你可以將它轉換在PHP,然後做一個insert (date("Y-m-d H:i:s",strtotime($your_date))))

2)

SELECT * FROM table 
WHERE HOUR(date) BETWEEN 'start_date' AND 'end_date' 
GROUP BY DAY(date) 
ORDER BY DAY(date) 
+0

您還可以使用:date('c',strtotime($ your_date)); – pascalvgemert

+0

我不認爲第一個選項是可能的,因爲它會影響我的應用程序的性能,因爲我有大約1000萬行數據。 此外,可以將startdate和end_date替換爲某個時間段,意思是任意天數但某個時間段 說每天7AM和8AM – Bazinga777

+0

當然,但您需要HART(日期)之間'start_hour'和'end_hour'在這種情況下, – Tanatos