例如,如果数据库中有一个字段的值为:2010-10-20-12.00.00.000000
如何获得包含20101020.
所以我可以做这样的事情:
SELECT * FROM file WHERE DATE(timestamp) BETWEEN 20101020 AND 20101031
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。DATE()不以 ISO 格式返回。
我一直认为 ISO 格式的日期是yyyy-mm-dd. 这是我们从 DB2 得到的表达式:
char (date_column,iso)
Run Code Online (Sandbox Code Playgroud)
但我认为您的情况不需要它,您应该能够这样做:
SELECT * FROM file where date(timestamp) between 20101020 and 20101031
Run Code Online (Sandbox Code Playgroud)
进入:
select *
from file
where timestamp >= '2010-10-20-00:00:00.000000'
and timestamp <= '2010-10-31-00:00:00.000000'
Run Code Online (Sandbox Code Playgroud)
这可能会运行得更快,因为您不需要对数据库中的每一行进行计算(如果 DBMS 不够智能,无法改变您的查询,这将是性能杀手)。
换句话说,唯一的计算是在查询运行之前,其中这些文本字段将转换为时间戳。