将格式从 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
我尝试使用以下语句将 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