Node.js怎么处理数据库中日期类型
发布于 11 年前 作者 xiuxu123 27733 次浏览 最后一次编辑是 8 年前

我在MySql数据库中的日期是timestamp类型,可是查询出来显示在页面上之后就变成了: Fri May 17 2013 14:12:33 GMT+0800 (中国标准时间)
这种格式,实际上数据库中显示的是: 2013-01-18 14:19:26
能不能把页面上也显示这种格式啊,不要上面那种格式,敬请各位指教,

13 回复

用moment 想怎么显示都可以。。

我会先将时间转为unix存入数据库, 在页面以Moment.js或其他方法格式化

推荐 moment

moment().format('MMMM Do YYYY, h:mm:ss a');

我的数据库里,时间存储的是string类型。先写好格式,然后存入。

Date.prototype.format = function(fmt){
var o = {
    "M+" : this.getMonth()+1,                 //月份
    "d+" : this.getDate(),                    //日
    "h+" : this.getHours(),                   //小时
    "m+" : this.getMinutes(),                 //分
    "s+" : this.getSeconds(),                 //秒
    "q+" : Math.floor((this.getMonth()+3)/3), //季度
    "S"  : this.getMilliseconds()             //毫秒
};

if(/(y+)/.test(fmt))
    fmt=fmt.replace(RegExp.$1, (this.getFullYear().toString()).substr(4 - RegExp.$1.length));
for(var k in o)
    if(new RegExp("("+ k +")").test(fmt))
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;

};

我是用date-utils

谢谢大家了,大家给了各种不同的方式,其实我用了另外一种方式,既然我使用的是MySql,那么MySql应该提供的有相应的函数,所以我用的是MySql提供的函数,直接转换,拿出来就可以用了,也不用使用额外的js了,方法如下:

date_format(article_date+’’, ‘%Y-%m-%d %H:%m:%S’) as date;

这样就转换为我要的格式了! 不过还是谢谢大家

以我的php和node开发经验来看 关于日期时间 还是存储为时间戳的整数形式比较好 有的时候做一些 时间比较 或是时间查询(比如最近三个月的记录) 用时间戳显然要快一点 格式化还是交给客户端吧 感觉格式化后的数据对开发人员 没有什么实际意义 在mysql中DateTime 还要比Int多占一些空间(仅供参考)

@marshal 很受用,谢谢您了

@marshal 一直都这么用的

不用那么麻烦吧,在connection的参数那里加一个 dateStrings: true , 就可以了吧,我是datetime类型的,测试了可以

回到顶部