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;
除了firstDayOfMonth
和lastDayOfMonth
被to_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 日期对象的主要内容,如果未能解决你的问题,请参考以下文章