我一直在寻找这个问题的解决方案,可能有些人可以帮助我或为我指明正确的方向。 我确实在这里阅读了所有与此相关的问答,但仍然没有找到解决方案。
我有一个写入 SQLite 数据库的 C# 程序。它以毫秒为单位写入事件和存储时间(以毫秒为单位的 Unix 纪元 - 1511737200042/1511737200秒部分 042 毫秒部分)。
我试过:
SELECT datetime(time/1000,'unixepoch') from table1;
= 2017-11-26 23:00:00
相当于
SELECT strftime('%d-%m-%Y %H:%M:%f', datetime(time/1000, 'unixepoch')) FROM table1;
=26-11-2017 23:00:00.000
但是结果没有ms粒度。
我看到这是因为我将时间除以 1000,然后强制计算当时不存在的分数。但如果我改变那个部门,我会得到完全不同的时间。
我找不到解决这个问题的方法。
我现在在考虑是否应该将毫秒(最后 3 位数字)存储在另一列中,然后加入两列。
谁能指点一下?
谢谢 亲切的问候,
PS:使用 SQL Server 导入和导出向导“时间”将整数 NOT NULL 1511737200042 转换为 2147483647 10 位数字。同样在 PowerBi 中。
最佳答案
全部date functions接受相同的日期格式和修饰符,因此您可以简单地删除嵌套的 datetime
调用。
你需要做一个浮点除法来保留毫秒:
SELECT strftime('%d-%m-%Y %H:%M:%f', time/1000.0, 'unixepoch') FROM table1;
关于c# - 将以毫秒为单位的 Sqlite Unix Epoch 转换为 Datetime YYYY-MM-DD HH :MM:SS. SSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587773/