无法从 MS 访问数据库中获取日期列。使用的 node-adodb 节点模块

unable to fetch date column from ms access db. node-adodb node module used

我注意到查询结果中未返回日期字段的问题。

我正在使用 "version": "2.0.2"

我的日期列(列名 - AcctDate 和 table 名称 - AccountingLog)日期格式是 - *1/2/1970 3:46:25 PM * 我的查询是:

SELECT MAX(AccountingLog.AcctDate) FROM AccountingLog WHERE AccountingLog.UserId = "'+userID+'"'

我也试过这个查询:SELECT * FROM AccountingLog

使用上述查询无法捕获日期列。

提前致谢。

我遇到了同样的问题。 Google 没有给我提供关于这个问题的好结果。 我在 adodb.js 文件中找到了问题。 Ms access returns 日期字段的 varDate 类型和 varDate 类型不允许 toString() 因此无法转换日期字段。

/**
* Fill records array
* @param recordset
* @returns {Array}
*/
function fillRecords(recordset){
  var item, records = [],
  count = recordset.Fields.Count;
  // Not empty
  if (!recordset.BOF || !recordset.EOF) {
    recordset.MoveFirst();

    while (!recordset.EOF) {
      item = {};
      for (var i = 0; i < count; i++) {
        var field = recordset.Fields.Item(i);
          item[field.name] = field.toString(); // CODE FAILS HERE FOR 'varDate'
        }
      records.push(item);
      recordset.MoveNext();
    }
  }
  return records;
}

我在上面的函数中添加了日期列名称检查(ms 访问数据库字段)。因此,当 recordset.Field 为 varDate 时,首先将 varDate 转换为 new Date(),然后应用字符串转换。请在下面找到代码片段。

function fillRecords(recordset){
  var item, records = [],
  count = recordset.Fields.Count;
  // Not empty
  if (!recordset.BOF || !recordset.EOF) {
    recordset.MoveFirst();

    while (!recordset.EOF) {
      item = {};
      for (var i = 0; i < count; i++) {
        var field = recordset.Fields.Item(i);
        // ADDED below condition.
        if(field.name === "ActivationTime" || field.name === "CreateDate")
        {
          var dateYear = new Date(field.value);
          item[field.name] = dateYear.toString();
        }else{
          item[field.name] = field.value;
        }

      }
      records.push(item);
      recordset.MoveNext();
    }
  }
  return records;
}