SQLite与JavaScript结合使我在日期上遇到了困难。
为清楚起见,我使用以下方法插入日期“01-01-1999”:
var yy = "01-01-1999";
var yyy = new Date (yy.replace( /(\d{2})-(\d{2})-(\d{4})/, "$3-$2-$1") ); //date into YYYY-MM-DD format
db.transaction (function (transaction)
{
var sql = "INSERT INTO happyPeople (datum, name, event) VALUES (?, ?, ?)";
transaction.executeSql (sql, [yyy, fNameIn, fEventIn], function ()
{
alert (fNameIn + " inserted with date " + yyy );
}, error);
在数据库中查看确实显示“Fri Jan 01 1999 01:00:00 GMT + 0100(CET)”
但是...
当我用
查询同一天(01-01-1999)时var sql = "SELECT * FROM happyPeople WHERE datum = strftime ('%Y-%m-%d','1999-01-01')";
我没有得到任何结果意味着没有错误但是返回空列表。如果我将'='替换为'!=',我将获得所有条目,因此查询似乎有效。 持有日期的SQLite数据库中的字段定义为VARCHAR [50],但我也尝试了TEXT。结果相同。
那么,如何在数据库中插入日期(对时间不感兴趣)以及如何查询它们?
谢谢!
答案 0 :(得分:0)
SQLite没有为日期分隔数据类型;你使用a string or a number。
您正确地将字符串转换为yyyy-mm-dd
格式。
代码有什么问题,然后它创建了一个Date
对象。
正如您从消息中看到的那样,yyy
不是格式正确的字符串。
只需删除new Date
,然后直接使用字符串。