【问题标题】:sequelize: how to compare dates续集:如何比较日期
【发布时间】:2014-11-26 22:55:06
【问题描述】:

我有一个表 oauth_refresh_token,如下所示:

var OAuthRefreshToken = myDb.define("oauth_refresh_token", {
    refresh_token: {type: sequelize.STRING, primaryKey: true} 
    client_id:    {type: sequelize.STRING}                      
});

Sequelize 自动为我创建列“created_at”和“updated_at”,数据类型为:“timestamp with time zone”。

现在我想问如何比较两个日期。如果它是在过去 24 小时内创建的,我想获得这种类型的对象。 到目前为止,我有这样的事情:

var currentTimeMinus24Hours = new Date()-24*60*60*1000;
return OAuthRefreshToken.find(
    where: {
        refresh_token: token
        updated_at: { gt: currentTimeMinus24Hours }
    }
)

如果我执行此代码,则会收到运算符不存在的异常:带时区的时间戳 > bigint。有道理,但是任何想法我如何使它工作。如果对你有帮助。我正在使用 postgres 数据库。

【问题讨论】:

    标签: javascript postgresql sequelize.js


    【解决方案1】:

    我使用 momentjs 库

    http://momentjs.com/

    调用 moment().format() 会以 timestamptz 格式为您提供日期时间。

    您应该使用 moment 还有很多原因,因为它是一个可靠的库,可以解决与操纵时间相关的许多问题。

    不过我很想看看是否还有其他的普通解决方案。

    【讨论】:

    • 我忘了你提到你可以这样做:moment(new Date()-24*60*60*1000).format(),或者在瞬间风格:moment().format().substract(24,'hours')
    • 这是moment().subtract().format() - 注意顺序 subtract vs substract
    • 时刻会改变时间,因此如果您不小心,最终可能会产生一些有趣的副作用。如需更新的解决方案,请查看 date-fns。
    猜你喜欢
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    相关资源
    最近更新 更多