2014-05-19 140 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