找回密码
 立即注册

QQ登录

只需一步,快速开始

chenjamo
金牌服务用户   /  发表于:2023-6-12 10:44  /   查看:1556  /  回复:10
1金币
本帖最后由 chenjamo 于 2023-6-12 10:45 编辑

有一张表1,有日期字段"提交时间",我需要在视图中显示为yyyy-mm-dd,然后在获取其中的yyyy,但是我执行以下语句后,出来的时间是1970-01-01,也尝试过多条其他语句也是有错误,麻烦咨询下在内联数据库sqllite中日期到底是存储成什么?

这个语句里面ID为22这行的提交时间复制表内容,显示的为2023/6/10 0:00:00
但是根据了解,在内联表sqllite中应该是存储为时间戳的,但是无法转换
SELECT strftime('%Y-%m-%d', datetime("提交时间", 'unixepoch')) AS formatted_date FROM  "表1" where ID=22

最佳答案

查看完整内容

感谢各位大佬的支持~ 大佬,这个我查了一下,发现sqlite中strftime函数的timestring用的是儒略日是从公元前4714年11月24计算 而活字格中日期使用的是excel的策略从公元1900年1月1日计算 粗略算了一下,(1900+4714)*365=2415205,和2415019差不多,估计应该是这个原因

10 个回复

倒序浏览
最佳答案
最佳答案
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2023-6-12 10:44:29
来自 9#
感谢各位大佬的支持~

大佬,这个我查了一下,发现sqlite中strftime函数的timestring用的是儒略日是从公元前4714年11月24计算

而活字格中日期使用的是excel的策略从公元1900年1月1日计算

粗略算了一下,(1900+4714)*365=2415205,和2415019差不多,估计应该是这个原因

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
VVANVI悬赏达人认证
论坛元老   /  发表于:2023-6-12 10:59:06
2#
取年份不是用year函数就可以了吗?你整的过于复杂了吧
回复 使用道具 举报
chenjamo
金牌服务用户   /  发表于:2023-6-12 11:09:56
3#
VVANVI 发表于 2023-6-12 10:59
取年份不是用year函数就可以了吗?你整的过于复杂了吧

直接用公式字段确实可以,但是我还有其他复杂的需求,所以需要写视图来出来,比如后面的季度或是其他的,在视图中就会有一些转换问题了
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2023-6-12 11:49:03
4#
感谢各位大佬的支持~
大佬,sqlite本身是没有数据类型的,文本,整数,日期,这些都是活字格产品修改后加上的。
视图中日期时间存储的是一个数字,您需要在前端中展示为什么样的格式,使用单元格格式或者excel函数,公式字段对这个数字去处理就可以了。

比如可以使用if函数+month函数去获取季度的公式字段

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
chenjamo
金牌服务用户   /  发表于:2023-6-12 13:59:47
5#
Lay.Li 发表于 2023-6-12 11:49
感谢各位大佬的支持~
大佬,sqlite本身是没有数据类型的,文本,整数,日期,这些都是活字格产品修改后加 ...

比如要统计数据或是其他原因,为了效率问题,就无法直接使用你说的这个方法,所以才要了解在视图中获取日期时间的部分内容,比如年,月,日等
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2023-6-12 14:32:29
6#
大佬,这边测试了一下,直接使用strftime得到的日期年份是一个负数,月份和日期都是相同的,然后试了一下,发现给日期+2415019天,就得到了准确的日期。您可以试一下下方这个方法



SELECT strftime('%Y/%m/%d',julianday("日期")+2415019) FROM "表1"


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
chenjamo
金牌服务用户   /  发表于:2023-6-12 15:56:43
7#
Lay.Li 发表于 2023-6-12 14:32
大佬,这边测试了一下,直接使用strftime得到的日期年份是一个负数,月份和日期都是相同的,然后试了一下, ...

这个加天数的办法有考虑过,但是总感觉不大靠谱的样子,就是直接将今天与1970-01-01的天数差加上再计算,但是具体为什么会出现直接写语句没加上2415019这个时间计算就错误的原因没找出来
回复 使用道具 举报
VVANVI悬赏达人认证
论坛元老   /  发表于:2023-6-12 16:34:03
8#
用外置库吧, 内置库  查文档比较费事
回复 使用道具 举报
chenjamo
金牌服务用户   /  发表于:2023-6-12 18:54:56
10#
Lay.Li 发表于 2023-6-12 10:44
感谢各位大佬的支持~

大佬,这个我查了一下,发现sqlite中strftime函数的timestring用的是儒略日是从公 ...

既然活字格使用的内置数据是sqllite,有考虑过将这个差异合并为一种?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部