SQLite查询的日期格式化

8
我正在尝试从我的SQLite数据库中提取和格式化时间戳。在我的阅读中,似乎与PHP可用的日期格式转换相比,SQLite格式非常有限。我有这个来自javascript的查询: SELECT strftime('%m %d,%Y',timestamp)AS saveddate 它返回:
03 03, 2009
我想让它返回:
March 3, 2009
有什么建议吗?
3个回答

8

遗憾的是,SQLite不支持月份名称。您需要使用查找表、case语句或在表示层上切换来将其转换为月份名称。


6

短月份名称

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))

破折号仅用于页面上明确表示,将其替换为空格


我认为你的查询中缺少了最后一个 '-':这个对我有用:select rtrim (substr ('January--February-March----April----May------June-----July-----August---SeptemberOctober--November-December', strftime ('%m', 'now') * 9 - 8, 9), '-')实际上...我刚看到你建议使用空格,这种情况下你不需要告诉 rtrim 去除 - - Simon Willison

6

SQLite专注于数据存储层的功能,而不是用户界面的功能,例如使用月份名称格式化日期等。我强烈建议您将这视为非常有用的提示,将每种功能保留在其适当的层次中!-)

如果您非常想在数据存储层中放置UI功能,则可以在某种程度上通过编写自己的C格式化函数并将它们连接到SQLite中,或者通过进行极其笨拙的SQL操作来实现,但我无法想象任何一个值得这样做的用例。


3
如果我的演示层是来自SQL语句输出的文本文件,怎么办?这是一个非常基本的需求,可惜SQLLite并没有直接支持它。然而鉴于它的目标和轻便性,我可以接受这个缺失的功能,只是感觉有点不爽。 - Kuberchaun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接