PostgreSQL->;SQLite:DATE\u TRUNC等价物
星期五下午,我累坏了。因此,其他SQL爱好者介绍了如何在PostgreSQL中使用以下WHERE子句,并将其转换为SQLite3,而无需使用编译扩展:PostgreSQL->;SQLite:DATE\u TRUNC等价物,sql,sqlite,Sql,Sqlite,星期五下午,我累坏了。因此,其他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) 在哪里 日期(“日”,c.开始日期)=日期(“日”,q.日期)
WHERE
DATE_TRUNC('day', c.start_date) <= DATE_TRUNC('day', q.date) AND
DATE_TRUNC('day', c.end_date) >= DATE_TRUNC('day', q.date)
在哪里
日期(“日”,c.开始日期)=日期(“日”,q.日期)
回顾SQLite3中的日期/时间函数,它们似乎只用于字符串格式。希望我看到了一些错误。SQLite没有日期的数据类型;它使用了 要删除时间戳的时间部分,请使用。 要使用的实际函数(
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')
我无法使上述方法在数小时或数分钟内有效 对于这些,您可以使用以下
strftime
功能进行破解:
选择日期时间(strftime(“%Y-%m-%dT%H:00:00”,“now”);
由于SQLite没有日期
数据类型,因此不可能有等效的数据类型。假设您的列的格式是SQLite可以理解为日期的格式,那么您需要的可能是日期(c.start\u date)
等等?
WHERE
date(c.start_date) <= date(q.date) AND
date(c.end_date) >= date(q.date)