我有一个从csv转储的数据库,其中我有一个使用VARCHAR导入的列名time_stamp
我现在有两件事我很困惑,
1)我希望能够将此列转换为时间戳或日期时间 它的当前格式是dd / mm / yyyy H:M:S但是我读到unix只接受 - 而不是 / 。这是真的?
2)我想使用上面的列从数据库中查询某个时间范围内最高的时间戳值
示例:在上午7点到上午8点之间,它应该给我一个最接近上午8点的时间戳
如果我的问题含糊不清,原谅我的问题,但我找不到与我的问题有多大关系。我相信这会得到一些投票,所以请善待。
答案 0 :(得分:0)
很少的东西..首先看这里看看有关日期格式的更多信息。 Insert current date in datetime format mySQL
第二,您应该更新表格以将/更改为 - 。
使用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')
类似的东西来修复它...这将使你的查询不那么复杂:)
答案 1 :(得分: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)