无法从 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;
}
我注意到查询结果中未返回日期字段的问题。
我正在使用 "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;
}