MySQL时间戳字段在API响应中返回空对象



我在MySQL中有一个简单表,其中有两个时间戳字段:

*"。。。

creation timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
last_edit timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

"*

当我尝试用一个简单的查询获取时:

SELECT * FROM customers

从我的Node.js(mysqljs(,json返回:

创建:{},//空对象

last_edit:{}//空对象

我怎样才能得到日期

提前感谢!:(

我猜这是JDBC问题,因为我看到了类似的行为。

在我的案例中,该列被定义为

`last_edit` datetime DEFAULT NULL

JDBCgetTimestamp()方法(建议作为正确的getter(返回{}

我发现使用getObject()方法以ISO字符串格式返回了预期的DATETIME值(对于我的用例来说已经足够了(。

刚刚注意到你说你正在使用";mysqljs"所以不确定这个修复是否与您的情况相关,因为JDBC部分被抽象掉了。。。

更新:由于某种原因,getObject()返回了一个距离数据库中显示的时间(UTC(+7小时的时间。

检查getTimestamp()的输出表明,它是一个具有getter和setter的对象(在"字符串化"之后不存在(,并编写了一个快速转换器。

function convert_ts_(ts) {
var date = (ts.getYear() + 1900) + '-' + ((ts.getMonth() + 1) > 9 ? ts.getMonth() + 1 : '0' + (ts.getMonth() + 1)) + '-' + (ts.getDate() > 9 ? ts.getDate() : '0' + ts.getDate());
var time = (ts.getHours() > 9 ? ts.getHours() : '0' + ts.getHours()) + ':' + (ts.getMinutes() > 9 ? ts.getMinutes() : '0') + ":" + (ts.getSeconds() > 9 ? ts.getSeconds() : '0' + ts.getSeconds());
return date + 'T' + time;
}

这将返回"0"中的日期;CCD_ 6 T CCD_;带零填充的格式

您需要在表中插入至少一条记录,才能从针对它的查询中返回任何结果。

如果你出于某种原因只想从数据库中检索当前日期,你可以这样做:

SELECT CURRENT_TIMESTAMP

SELECT NOW()

最新更新