这是一个面试问题:给定一个数据库(mysql或类似数据库),每个记录都有“开始时间”和“结束时间”列,我被要求获取当前系统时间介于开始时间和结束时间之间的记录。但开始和结束时间是时间戳(YYYY-MM-DD HH:MM:SS)。因此,我应该只查找时间部分(HH:MM:SS)在范围内的日期(显然,相同的日期永远不会重复:)。
发布于 2013-07-03 11:23:13
是像这样吗?
SELECT *
FROM table
WHERE CURRENT_TIMESTAMP BETWEEN start_time and end_time发布于 2013-07-03 11:26:20
这个问题高度依赖于数据库引擎。几乎每个数据库都有自己的函数。在面试问题中说mysql or equivalent等同于问你是否知道那些特定的mysql函数……顺便说一句,在主要数据库中,它与标准实际定义的函数最不相似,部分原因是mysql使用unix时间的历史。MySQL就像数据库的VB6,这个问题强烈地表明,面试官要么自己没有意识到这一点,要么厌倦了采访没有意识到这一点的开发人员。
完整的标准sql参考需要付费下载,但我在这里为您找到了sql-92标准日期和时间数据类型和操作的参考:
http://www.ibphoenix.com/resources/documents/design/doc_169
发布于 2013-07-03 11:58:13
SELECT *
FROM MyTable T
WHERE TIME_TO_SEC(CURRENT_TIMESTAMP) BETWEEN TIME_TO_SEC(T.start_time)
AND TIME_TO_SEC(T.end_time)https://stackoverflow.com/questions/17439071
复制相似问题