我正在尝试使用以下查询从数据库中检索数据:
select * from Oil Where date(DDate)=date('2012-08-07');
其中 DDate 是 Oil 表中数据类型为 text 的列之一。我得到Arrayindexoutofboundsexception。我发现它没有返回任何值,计数为 0。任何人都可以帮我解决这个问题。我实际上要做的是在表中存储日期值。我找不到应该使用哪种数据类型来保存日期,从 sqlite 站点是它没有日期和时间的特定数据类型。
SQL Server 附带以下数据类型,用于在数据库中存储日期或日期/时间值:
日期- 格式 YYYY-MM-DD
DATETIME - 格式:YYYY-MM-DD HH:MM:SS
SMALLDATETIME - 格式:YYYY-MM-DD HH:MM:SS
select * from Oil Where date(DDate)=date('2012-08-07');
可
select * from Oil Where DDate='2012-08-07';
如果您有日期格式为“yyyy-MM-dd”的 DDate,那么您可以使用直接比较日期
select * from Oil Where DDate='2012-08-07';
否则,如果您的日期格式为“yyyy-MM-dd HH:mm:ss”,则查询如下所示
select * from Oil Where date(DDate)='2012-08-07';
如果您在 sqlite 数据库中保存日期并且您必须执行日期操作,例如排序或使用 date() 和 time() 函数,那么您必须使用 'yyyy-MM-dd HH:mm:ss' 日期格式。
数据类型对 sqlite 无关紧要。