作者:我叫柒薇安2001 | 来源:互联网 | 2023-05-21 08:44
星期五下午,我炸了。因此,SQL爱好者同胞介绍了如何在PostgreSQL中采用以下WHERE子句并将其转换为SQLite3而不使用已编译的扩展名:
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中的日期/时间函数,似乎它们仅用于字符串格式。希望我看到了问题。
1> CL...:
SQLite没有日期数据类型。它使用字符串或数字代替。
要删除时间戳记的时间部分,请使用start of day
修饰符。实际功能使用(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)