WHERE
DATE_TRUNC('day', c.start_date) <= DATE_TRUNC('day', q.date) AND
DATE_TRUNC('day', c.end_date) >= DATE_TRUNC('day', q.date)
在SQLite3中查看日期/时间函数似乎它们只用于字符串格式化。希望我看错了。
答案 0 :(得分:3)
SQLite没有日期的数据类型;它改为使用strings or numbers。
要删除时间戳的时间部分,请使用start of day
modifier。
要使用的实际功能(datetime()
,julianday()
,strftime('%s')
)取决于日期值的格式:
WHERE
datetime(c.start_date, 'start of day') <= datetime(q.date, 'start of date') AND
datetime(c.end_date, 'start of day') >= datetime(q.date, 'start of date')
在这种情况下,您可以使用date()
函数,因为您不关心结果的实际格式,只关注它的比较方式:
WHERE
date(c.start_date) <= date(q.date) AND
date(c.end_date) >= date(q.date)
答案 1 :(得分:0)
我无法使上述方法工作数小时或数分钟。
对于这些,您可以使用strftime
功能来解决问题:
select datetime(strftime('%Y-%m-%dT%H:00:00', 'now'));