我正在尝试存储一周的时间表(例如,周一,上午9点至下午5点等)。我没有必要存储日期;我只需要保存以下内容:日期,时间,时间。
所以,说我有以下时间值:
假设这些值是实际有效时间,我如何将这些字符串转换为MySQL时间类型?我该怎么做呢? (我正在使用PHP。)
此外,我如何查询这样的事情:找到周一下午2点到3点之间开放的每家商店?我只是做了类似的事情:WHERE day = 1 AND from_time> = 2pm AND to_time< = 3pm(当然,将'2pm'和'3pm'更改为他们的转换值)?或者是否有一些更适合此类查询的MySQL函数?
答案 0 :(得分:1)
MySQL内置了将unix时间戳转换为MySQL日期:
INSERT INTO table (the_date) VALUES (FROM_UNIXTIME(your_timestamp));
......反过来......
SELECT UNIX_TIMESTAMP(the_date) FROM table;
您可以使用DAY()
条件中的DAYOFWEEK()
和WHERE
函数将MySQL时间戳转换为相关单位,以便您进行查询。
您可能需要对模式进行一些操作以确定最佳结构,以便您在此处获得所需的功能。例如。将日期存储在日期时间字段中可能没有意义。
答案 1 :(得分:0)
MySQL了解ISO 8601日期格式,因此您必须在上午8:00以“08:00:00”的形式提供时间。
您可以在WHERE子句中使用具有有效ISO 8601时间的字符串。
http://en.wikipedia.org/wiki/ISO_8601
答案 2 :(得分:0)
MySQL有一个TIME data type - 它会以hh:mi:ss格式存储值,您可以使用TIME_FORMAT function将演示文稿更改为您想要的。
尽量不要依赖应用于列的函数进行比较 - IE:
WHERE TIME_TO_SEC(column) = 123
...因为如果列上存在索引,它将呈现索引,无用 - 确保表扫描(性能最差的选项)。