如何在sqlite中将正在运行的整数添加到当前时间

时间:2014-09-15 12:30:09

标签: sqlite datetime

我有一个SQLite DB,在Messdatum字段中只有日期为TEXT。现在我想 将随机时间连接到该字段,以便Messdatum随时间导致ISO格式。 如何使用一个sql命令更新我的SQL DB?

我的选择测试是:     SELECT strftime('%Y-%m-%d',Messdatum)||' '||来自lipo的strftime('%H:%M:%S',CURRENT_TIME)

但总是有相同的时间。 感谢

1 个答案:

答案 0 :(得分:0)

如果你真的想要随机时间,你可以添加一个随机数秒(86400是一天中的秒数):

SELECT datetime(Messdatum, '+' || (abs(random()) % 86400) || ' seconds')
FROM lipo

但是,这确实保证每天的值都是唯一的。

要获取唯一值,您可以使用内部rowid,但这仅适用于每天的第一行和最后一行相距少于86400行,即如果插入其他行,这可能会中断特定日期之后很久:

SELECT datetime(Messdatum, '+' || (rowid % 86400) || ' seconds')
FROM lipo

最可靠(但最慢)的方法是计算具有相同日期的先前行数:

SELECT datetime(Messdatum, '+' || (SELECT COUNT(*)
                                   FROM lipo AS L2
                                   WHERE L2.Messdatum = lipo.Messdatum
                                     AND L2.rowid < lipo.rowid
                                  ) || ' seconds')
FROM lipo