gpt4 book ai didi

javascript - 选择 ISO 8601 格式的 Sqlite 日期值

转载 作者:行者123 更新时间:2023-12-01 02:28:53 24 4
gpt4 key购买 nike

我正在使用 Knex.js 从 SQLite 数据库中选择记录。然后我希望将记录作为 Web API 的一部分以 JSON 形式返回。从 Sqlite 选择日期时,它们的格式类似于 2018-01-01 00:00:00.000

我希望它们的格式类似于 JavaScript 的 date toJSON() 函数:1975-08-19T23:15:30.000Z

有没有办法让数据库在查询时像这样格式化日期字段?

最佳答案

So I was hoping there's a way in a connection string, or Knex, etc. to tell Sqlite how to format the dates.

简短回答:抱歉,没有。

SQLite 将 ISO8601 日期存储为字符串,并且没有内置数据类型来改变它。

来自SQLite Documentation :

SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").

REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.

INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.

可能的解决方法#1 - 在数据库中:您也许可以使用strftime() @sbooth 在 CREATE TRIGGER BEFORE ... 中指出覆盖默认的存储字符串格式。 Docs link (抱歉,我个人没有这样做过。)

可能的解决方法 #2 - 在 JS 代码中:使用 javascript (如您提到的: .toJSON() )以另一种方式预先格式化日期字符串以进行存储。我使用类似的东西:

var createDate = (new Date()).toISOString();

...格式化我的日期以存储在代码中,其具有您正在寻找的格式:'2018-01-28T02:39:53.226Z' .

此外,还有一个可能需要注意的问题:当您SELECT时通过 Knex 从 SQLite DB 获取 ISO8601 字符串日期“类型”,它将作为字符串类型返回,而不是 Date() 类型。

希望这对您有帮助。加里。

关于javascript - 选择 ISO 8601 格式的 Sqlite 日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com