将格式从 DD/MM/YYYY hh:mm 更改为 YYYY-MM-DD hh:mm

Change Format from DD/MM/YYYY hh:mm to YYYY-MM-DD hh:mm

我尝试使用以下语句将 DateTimes 更改为 SQLite 所需的 DateTime 格式 YYYY-MM-DD hh:mm 以便执行计算。但是声明给了我一个“输入不完整”的信息。示例输入输出如下:

e.g. 03/05/2020 17:34 => 2020-05-03 17:34

> UPDATE Combined_Bike_Ride SET started_at = substr(started_at,7,4) ||"-"|| substr(started_at(4,2)||"-"||substr(started_at(1,2)||" "||substr(started_at(12,2)||":"||substr(started_at(15,2)

您认为声明中遗漏了什么?

对于这种情况下的调试,采取“婴儿步骤”。更改虚拟测试数据库中虚拟列的内容。然后将您的更新命令拆分为更小的部分,一次添加一个。

花了大约 2 分钟才看到您在需要逗号的地方加上了括号。

UPDATE dt 
    SET 
       md = 
       substr(sa,7,4) ||"-"|| 
       substr(sa,4,2)||"-"||
       substr(sa,1,2)||" "|| 
       substr(sa,12,2)||":"||
       substr(sa,15,2)

你在其中的大部分中都有 substr(sa(4,2),使其成为一个(不完整的)函数。

顺便说一句,将 SQL 语句拆分成多行是完全可以的,这会使其更具可读性。

最重要的一课:在调试中采取小步骤

请注意,如果其中一个日期没有前导零,您的函数将失败。用编程语言来做比较靠谱,as discussed here