【问题标题】:How to query specific dates in JavaScript on Sqlite database如何在 Sqlite 数据库的 JavaScript 中查询特定日期
【发布时间】:2014-04-11 17:15:42
【问题描述】:

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 。结果一样。

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

谢谢!

【问题讨论】:

    标签: javascript sqlite date


    【解决方案1】:

    SQLite 没有单独的日期数据类型;你用a string or a number

    您正确地将字符串转换为yyyy-mm-dd 格式。 代码的问题在于它随后创建了一个Date 对象。 从消息中可以看出,yyy 不是格式正确的字符串。

    只需去掉new Date,直接使用字符串即可。

    【讨论】:

    • 确实有效。我不确定我是否理解,但是,是的,我现在可以查询。谢谢
    猜你喜欢
    • 2014-06-03
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多