【发布时间】:2011-02-14 14:47:09
【问题描述】:
简而言之,如何在一个 select 语句中,通过在 sqlite3 中加入它们,将位于另一个表中的整数的分钟添加到日期时间?
我有一个 sqlite3 数据库:
表 P(int id, ..., int 分钟) 和一个表 S(int id, int p_id, datetime start)
我想通过加入 S.p_id=P.id 生成一个给我 PS(S.id, P.id, S.start + P.minutes) 的视图
问题是,如果我从应用程序生成查询,我可以执行以下操作:
select datetime('2010-04-21 14:00', '+20 minutes');
2010-04-21 14:20:00
通过在应用程序中创建字符串“+20 分钟”,然后将其传递给 sqlite。但是我找不到在选择本身中创建此字符串的方法:
select p.*,datetime(s.start_at, formatstring('+%s minutes', p.minutes)) from p,s where s.p_id=p.id;
因为据文档所述,sqlite 不提供任何字符串格式功能,我也看不到任何表示日期修饰符的替代方式。
在 MySQL 中,日期修饰符不是基于字符串的,所以它确实有效:
mysql> create table p ( id integer, minutes integer);
mysql> create table s ( id integer, p_id integer, start datetime);
mysql> insert into p values (1, 10);
mysql> insert into p values (2, 15);
mysql> insert into s values (1, 1, '2008-12-31 14:00');
mysql> insert into s values (2, 1, '2008-12-31 15:00');
mysql> insert into s values (3, 2, '2008-05-10 13:30');
mysql> SELECT p.*,(s.start + INTERVAL p.minutes MINUTE) FROM p,s WHERE p.id=s.p_id;
+------+---------+---------------------------------------+
| id | minutes | (s.start + INTERVAL p.minutes MINUTE) |
+------+---------+---------------------------------------+
| 1 | 10 | 2008-12-31 14:10:00 |
| 1 | 10 | 2008-12-31 15:10:00 |
| 2 | 15 | 2008-05-10 13:45:00 |
+------+---------+---------------------------------------+
3 rows in set (0.02 sec)
【问题讨论】:
标签: sql database datetime sqlite