Javascript 日期到 sql 日期对象

Posted

技术标签:

【中文标题】Javascript 日期到 sql 日期对象【英文标题】:Javascript date to sql date object 【发布时间】:2013-12-03 17:30:24 【问题描述】:

我正在尝试编写一个查询,该查询采用 javascript 日期对象,然后将其放入 SQL Server 和 Oracle 数据库类型都可以识别的对象类型中。

问题是我正在使用网络服务。所以它必须是一个字符串,而不是实际传递的参数。这就是我的意思:

var date = new Date();
var firstDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDayOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0);

var webServicesQueryWhereClause = 'readDate BETWEEN '+firstDayOfMonth+' AND '+lastDayOfMonth;

除了firstDayOfMonthlastDayOfMonthto_date() 之类的东西包围,实际上将它们放在数据库可以读取的日期格式中。例如:

var webServicesQueryWhereClause = 'readDate BETWEEN to_date('+firstDayOfMonth+') AND to_date('+lastDayOfMonth+') ';

我应该使用什么来将这些日期放入 SQL Server 和 Oracle 都可以读取的格式中?

【问题讨论】:

所有 SQL 数据库都可以明确读取 ISO 日期格式:("YYYY-MM-DD HH:mm:ss") firstDayOfMonth.toISOString() 应该可以解决问题。 这是如何执行的?你用的是哪个库?通常最好让数据库来决定如何将日期对象转换为可识别的格式(但是,在您的情况下这可能是不可能的)。 我建议在您的 Web 服务层中构建查询字符串,除非这是 node.js 代码。如果您使用asp.net,请查看:momentjs.com/docs/#/parsing/asp-net-json-date @James 我正在使用大气库和 javax.jws 服务器端来处理 Web 服务。 @guiomie 这不是一个选项。此查询字符串从使用 Sencha 创建的应用程序运行。 【参考方案1】:

您是否尝试过这里介绍的解决方案:

Convert JS date time to mysql datetime

标题应该叫

“将 JS 日期转换为 SQL 日期时间”

我恰好需要和你做同样的事情,我在你的问题之后遇到了这个。

这是来自 Gajus Kuizinas 的另一篇帖子,供那些希望在此页面上获得答案的人使用:

var pad = function(num)  return ('00'+num).slice(-2) ;
var date;
date = new Date();
date = date.getUTCFullYear()         + '-' +
        pad(date.getUTCMonth() + 1)  + '-' +
        pad(date.getUTCDate())       + ' ' +
        pad(date.getUTCHours())      + ':' +
        pad(date.getUTCMinutes())    + ':' +
        pad(date.getUTCSeconds());

new Date().toISOString().slice(0, 19).replace('T', ' ');

第一个对我有用。我对 toISOString 也有一个参考问题,尽管我更喜欢一个班轮。任何人都可以澄清如何使用它并知道在哪里可以引用它的限制吗? 祝你好运!

【讨论】:

toISOString 支持 IE9+ kangax.github.io/compat-table/es5/#Date.prototype.toISOString 问题是关于 MS SQL (T-sql) 而不是 mysql :/ 第一个对我有用,但它有一个错字:对于每个“pad”,函数调用必须有一个结束,即一个“)”。【参考方案2】:

使用 MomentJs 会很容易。

moment().format('YYYY-MM-DD HH:mm:ss')

https://momentjs.com/

【讨论】:

【参考方案3】:

在我的例子中,我试图获取一个 TIMESTAMP 并将其存储到一个变量中,以便我可以在 SQL 查询中传递该数组(行插入)

以下内容对我很有效。

var created_at = new Date().toISOString().slice(0, 19).replace('T', ' ');

【讨论】:

这个确切的片段已经有了答案【参考方案4】:

我可能找到了一个更短的方法 - 在 MSSQL 和 Postgres 上测试

const date = (new Date()).toLocaleString("en-US")

享受吧!

【讨论】:

它对我不起作用。返回值为“6/30/2021, 2:39:16 PM”,而它需要是“2021-06-30 2:39:16 PM”类型。

以上是关于Javascript 日期到 sql 日期对象的主要内容,如果未能解决你的问题,请参考以下文章

在javascript中将时间添加到日期对象

JavaScript初探系列之日期对象

JavaScript Date(日期)对象

javascript日期对象

如何将 SQL 日期类型转换为 Java 参数

javascript基础学习