【发布时间】:2012-02-08 23:23:50
【问题描述】:
我在 SQLITE 中有一个使用以下结构的数据库/表
CREATE TABLE milestones (
ID INT( 10 ) NOT NULL,
Title VARCHAR( 50 ) DEFAULT NULL,
mYear INT( 11 ) NOT NULL,
mMonth INT( 11 ) DEFAULT NULL,
mDay INT( 11 ) DEFAULT NULL,
mText VARCHAR( 2000 ) NOT NULL,
Theme1 VARCHAR( 50 ) DEFAULT NULL,
Theme2 VARCHAR( 50 ) DEFAULT NULL,
ImageURL VARCHAR( 50 ) DEFAULT NULL,
PRIMARY KEY ( ID )
);
我正在使用以下查询来获取与今天日期最近的 5 个日期。
SELECT dtable.ID, dtable.Date
FROM(SELECT ID, date(mYear||'-'||mMonth||'-'||mDay) as Date
FROM milestones
WHERE mMonth IS NOT NULL AND mDay IS NOT NULL AND mMonth ="+varMonth+")AS dtable
ORDER BY ABS("+varDay+"-date(dtable.Date, '%d'))
LIMIT 5;
使用此查询的问题是我只能获取日期格式为 yyyy-mm-dd 的记录。 如果有任何包含 1 位数月份或日期的记录(格式 yyyy-m-d 或 yyyy-mm-d 或 yyyy-m-dd),则它不会显示在结果中。
如何在不更改 mMonth 或 mDay 的数据类型的情况下解决此问题?
【问题讨论】:
-
你为什么不用 Javascript 来做这个?
-
你的问题是如何在 SQL 中做到这一点我说你应该在 Javascript 中做到这一点
-
@Toby:不使用 Javascript 的明显原因是您必须将整个表格下载到 javascript 中才能进行比较...
标签: javascript html sql sqlite