SQLlite函数以日期格式YYYY-MM-DDTHH:MM:SS.SSS + 0000

问题描述 投票:-1回答:1
select  
    datetime(SVMXC__Scheduled_Date_Time__c), 
    SVMXC__Scheduled_Date_Time__c 
from table_a 

为datetime函数返回null。

我想得到之间的区别

datetime(SVMXC__Scheduled_Date_Time__c) - datetime('now') 

[2020-04-26T17:45:00.000+0000是存储为varchar的日期。

sql sqlite date date-difference
1个回答
0
投票

要使其正常工作,您需要指定日期,使其具有SQLite可以识别的格式。这是两个选项。

如果偏移量始终为+0000,如问题所示,则可以将其删除。这为您提供了格式YYYY-MM-DDTHH:MM:SS.SSS,SQLite可以理解:

substr(SVMXC__Scheduled_Date_Time__c, 1, 23)

有了这个值,您就可以使用julianday()计算与现在的差值,以天数为单位:

select
    SVMXC__Scheduled_Date_Time__c,
    julianday(substr(SVMXC__Scheduled_Date_Time__c, 1, 23)) - julianday('now') diff
from mytable

-

另一方面,如果确实需要考虑偏移量,则SQLite期望小时与分钟之间为:,因此您需要将其插入字符串中:

substr(SVMXC__Scheduled_Date_Time__c, 1, 25) 
    || ':' 
    || substr(SVMXC__Scheduled_Date_Time__c, 1, -2)

然后:

select
    SVMXC__Scheduled_Date_Time__c,
    julianday(
        substr(SVMXC__Scheduled_Date_Time__c, 1, 25) 
            || ':' 
            || substr(SVMXC__Scheduled_Date_Time__c, 1, -2)
    ) - julianday('now') diff
from mytable
© www.soinside.com 2019 - 2024. All rights reserved.