【问题标题】:How to convert time to seconds with SQLite如何使用 SQLite 将时间转换为秒
【发布时间】:2013-11-05 18:29:30
【问题描述】:

我希望能够将例如下午 2:30 存储在 SQLite 的列中,并且能够提取该时间并将其转换为秒,SQLite 是否有此功能?

我正在阅读http://www.sqlite.org/datatype3.html,他们确实声明他们有时间功能,但我可以这样做吗?我知道 SQLite 没有时间数据类型,但是我应该将它存储为什么类型,varchar?

2:30pm --> 52200

我正在阅读更多内容:http://www.sqlite.org/lang_datefunc.html

似乎可以接受的时间列表是:

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

这是否意味着您不能使用下午 2:30 作为一种格式?

【问题讨论】:

  • 你打算用这些数据做什么?答案将取决于此。
  • 我正在为 iPhone Buss stop 应用程序创建一个数据库,我想以下午 2:30 格式存储时间,但是当我提取信息时,它会以秒为单位进行.

标签: sqlite


【解决方案1】:

由于您需要从当天开始以秒为单位的值(根据您的说明),您可以将其存储为整数。要将其转换为从一天开始的秒数而不是 1970 年,只需从中减去当天的午夜。

类似的东西 strftime('%s','2004-01-01 14:30:00') - strftime('%s','2004-01-01 00:00:00')

如果您尝试存储的下午 2:30 是当前时间,那么您可以将其缩短为 strftime('%s','now') - strftime('%s','2004-01-01 00:00:00')

【讨论】:

  • 当您将存储为整数时,您的意思是将“2:30pm”存储为整数吗?这行得通吗?
  • 您似乎使用的是 14:30(24 小时制),而我有 2:30 pm(12 小时制).... 我如何将 2:30pm 变成 14:30?我在这个表中也有很多次,上午 9 点 40 分、上午 10 点 50 分、下午 1 点 40 分等等。
  • 是的,您需要在数据库之外执行该部分。如果最后发现“下午”,您可以通过添加 12 小时来简化任务。但是您必须将该逻辑放在 SQL 之外。
  • 我将表格更改为 24 小时制,效果很好:SELECT strftime('%s','2004-01-01 ' || stop_time) - strftime('%s','2004-01-01 00:00:00') FROM route_stop_list
  • 这也很好用:SELECT strftime('%s','1970-01-01 ' || stop_time) FROM route_stop_list
猜你喜欢
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2011-04-27
  • 2011-04-14
  • 1970-01-01
相关资源
最近更新 更多