这是一个面试问题: 给定一个数据库(mysql或等价物),每个记录包含列'开始时间'和'结束时间' 我被要求获取当前系统时间在开始和结束时间之间的记录。但是开始和结束时间是时间戳(YYYY-MM-DD HH:MM:SS)。所以我只应该寻找时间部分(HH:MM:SS)落在范围内的那些(显然同一个日期永远不会重复:))。
答案 0 :(得分:0)
喜欢这个吗?
SELECT *
FROM table
WHERE CURRENT_TIMESTAMP BETWEEN start_time and end_time
答案 1 :(得分:0)
此问题依赖于高度数据库引擎。几乎每个数据库都有自己的功能。在面试问题中说mysql or equivalent
与询问你是否知道那些特定的mysql函数是一样的......顺便说一下,主要数据库最不类似于标准实际定义的函数,部分原因在于mysql使用unix时间的历史。 MySQL就像数据库的VB6一样,这个问题强烈地表明访问者要么自己不知道这一点,要么厌倦了采访那些不知道它的开发人员。
完整的标准sql参考需要付费才能下载,但我确实在这里找到了sql-92标准日期和时间数据类型和操作的参考:
答案 2 :(得分:0)
SELECT *
FROM MyTable T
WHERE TIME_TO_SEC(CURRENT_TIMESTAMP) BETWEEN TIME_TO_SEC(T.start_time)
AND TIME_TO_SEC(T.end_time)