我有一个数据库转储从csv,我有一个列名time_stamp,我导入使用VARCHAR
我现在有两件事很困惑,
1)我希望能够将此列转换为时间戳或日期时间它的当前格式是dd/mm/yyyy H:M:S,但是我读到unix只接受-而不是/。这是真的吗?
2)我想从数据库中查询一个时间戳值,该值是使用上面的
列在某个时间范围内最高的。示例:在上午7点到8点之间,它应该给我最接近上午8点的时间戳
如果我的问题是模糊的,请原谅我的问题,但是我没有找到很多与我的问题相关的东西。我确信这将得到一些反对的投票,所以请友好。几件事…首先查看这里了解更多关于日期格式的信息。以datetime格式插入当前日期
第二,您可能应该更新表,将/更改为-。
使用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
start和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')
类似的东西来修复它…这将使您的查询不那么复杂:)
1)是的,那是真的。Date需要设置为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)