0

这是一个面试问题:给定一个数据库(mysql 或等效的),每条记录都有“开始时间”和“结束时间”列,我被要求获取当前系统时间介于开始时间和结束时间之间的记录。但开始和结束时间是时间戳(YYYY-MM-DD HH:MM:SS)。所以我只应该寻找时间部分(HH:MM:SS)在范围内的那些(显然相同的日期永远不会重复:))。

4

3 回答 3

0

这个问题高度依赖于数据库引擎。几乎每个数据库都有自己的功能。在面试问题中说mysql or equivalent的问题与问你是否知道那些特定的 mysql 函数差不多……顺便说一下,在主要数据库中,这些函数与标准中实际定义的函数最不相似,部分原因是 mysql 使用 unix 的历史时间。MySQL就像数据库的VB6,这个问题强烈表明面试官要么自己不知道这一点,要么厌倦了采访不知道这一点的开发人员。

完整的标准 sql 参考需要付费才能下载,但我确实在这里找到了 sql-92 标准日期和时间数据类型和操作的参考:

http://www.ibphoenix.com/resources/documents/design/doc_169

于 2013-07-03T03:26:20.373 回答
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)
于 2013-07-03T03:58:12.900 回答
0

像这样?

SELECT *
FROM table
WHERE CURRENT_TIMESTAMP BETWEEN start_time and end_time
于 2013-07-03T03:23:13.360 回答