如何在Sqlite数据库中查询JavaScript中的特定日期

时间:2014-03-08 12:01:41

标签: javascript sqlite date

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。结果相同。

那么,如何在数据库中插入日期(对时间不感兴趣)以及如何查询它们?

谢谢!

1 个答案:

答案 0 :(得分:0)

SQLite没有为日期分隔数据类型;你使用a string or a number

您正确地将字符串转换为yyyy-mm-dd格式。 代码有什么问题,然后它创建了一个Date对象。 正如您从消息中看到的那样,yyy不是格式正确的字符串。

只需删除new Date,然后直接使用字符串。