C# 将Sqlite Unix历元(毫秒)转换为日期时间YYYY-MM-DD HH:MM:SS.SSS
我一直在寻找解决这个问题的方法,也许有些方法可以帮助我或者为我指明正确的方向。 我确实在这里阅读了所有与此相关的问答,但仍然没有找到解决方案 我有一个c程序,可以写入SQLite数据库。它以毫秒为单位写入事件并将时间存储在ms-1511737200042/1511737200sec部分042 ms部分中 我试过:C# 将Sqlite Unix历元(毫秒)转换为日期时间YYYY-MM-DD HH:MM:SS.SSS,c#,sqlite,datetime,C#,Sqlite,Datetime,我一直在寻找解决这个问题的方法,也许有些方法可以帮助我或者为我指明正确的方向。 我确实在这里阅读了所有与此相关的问答,但仍然没有找到解决方案 我有一个c程序,可以写入SQLite数据库。它以毫秒为单位写入事件并将时间存储在ms-1511737200042/1511737200sec部分042 ms部分中 我试过: SELECT datetime(time/1000,'unixepoch') from table1; =2017-11-26 23:00:00 这相当于 SELECT strfti
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导入和导出向导导入SQL时,一个非空整数1511737200042转换为2147483647一个10位数。同样在PowerBi中 都接受相同的日期格式和修饰符,因此您只需删除嵌套的datetime调用即可。
您需要进行浮点除法以保留毫秒数:
从表1中选择strftime“%d-%m-%Y%H:%m:%f”,time/1000.0,“unixepoch”;
除以1000.0?或者用你自己的代码来处理计算?非常感谢@CL。我本来打算给你打分的,但似乎我做不到。您的答案提供了正确的格式。和前面的一样,但更简洁。非常感谢您。@Helder您可以通过单击左侧的绿色复选标记来标记此答案是否正确。@CL。除以浮点数以保留毫秒是我的关键所在。很好的答案+1。