我正在尝试从 SQLite 数据库中提取并格式化时间戳。在我的阅读中,与 PHP 可用的日期格式转换相比,SQLite 格式似乎极其有限。我有来自 javascript 的查询:
SELECT strftime('%m %d, %Y', timestamp) AS saveddate
它返回:
2009 年 3 月 3 日
我正在努力让它返回:
2009 年 3 月 3 日
有什么建议吗?
SQLite 不支持月份名称。您必须使用查找表、case 语句或表示层上的开关将其转换为月份名称。
SQLite 确实专注于属于数据存储层的功能,而不是属于用户界面的功能,例如使用月份名称格式化日期等。我强烈建议您将此视为非常有用的提示,以将每种功能保留在适当的层中!-)。
如果您绝对热衷于将 UI 功能放在数据存储层中,那么这在某种程度上可以被硬塞进去,例如通过用 C 编写自己的格式化函数并将它们连接到 SQLite 中,或者经历令人难以置信的笨拙 SQL 循环,但我无法想象有任何用例值得这样做。
月份短名称
substr ("--JanFebMarAprMayJunJulAugSepOctNovDec", strftime ("%m", thedate) * 3, 3)
完整月份名称
rtrim (substr ("January--February-March----April----May------June-----July-----August---SeptemberOctober--November-December", strftime ("%m", thedate) * 9 - 8, 9))
破折号仅用于在页面上清晰显示。将它们替换为空格。
您可以使用以下查询来获取以下格式的日期 使用 SQLite 的 DD-Mon-YYYY
select strftime ('%d', 'now')||'-'||substr('--JanFebMarAprMayJunJulAugSepOctNovDec',strftime ('%m', 'now') * 3, 3)||'-'| |strftime('%Y', '现在') 作为日期
#SQLite