【问题标题】:get month from the datetime in MSSQL using knexjs使用 knexjs 从 MSSQL 中的日期时间获取月份
【发布时间】:2017-11-07 14:09:08
【问题描述】:

我使用 nodejs 和 knexjs 开发了一个基于 Web 的系统,用于与数据库相关的事情。当我尝试使用 knexjs 从数据库中获取特定月份的数据时遇到问题。通常,我可以使用 Month(date) 使用原始 sql 从数据库中获取日期的月份。这是我在 knexjs 中的查询:

.where('Month(message_time)',(new Date()).getMonth()+1)

错误消息说该列无效。

Unhandled rejection RequestError: Invalid column name 'Month(message_time)'. 

我们将不胜感激。谢谢!

【问题讨论】:

  • 请发布您收到的确切错误消息。 isNusantaramessage_time 是否作为列存在于您的表中?
  • 是的,两列都存在。我刚刚更新了错误信息
  • 我不是 knex 方面的专家,但是如果您删除 MONTH() 位会发生什么?它是否可能根本无法处理代码的.Where 部分中使用的函数?
  • message_time的数据类型是什么?
  • 数据类型为日期时间

标签: sql-server node.js knex.js


【解决方案1】:

任何时候你使用一个函数,比如MONTH,你应该使用一个“原始”语句:

.whereRaw('Month(message_time) = ?', [(new Date()).getMonth()+1])

您可以阅读有关原始语句和参数绑定的更多信息here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2011-04-02
    • 2010-09-07
    • 2014-07-24
    • 2018-12-08
    • 2019-01-07
    • 2015-05-23
    相关资源
    最近更新 更多