2012-10-21 84 views
1

有一个下表:如何将单个字段转换为计算星期的SQLite日期?

CREATE TABLE `foo`(
    `year` INT NOT NULL, 
    `month` INT NOT NULL, 
    `day` INT NOT NULL, 
    `hour` INT NOT NULL, 
    `minute` INT NOT NULL, 
    `value` INT NOT NULL, 
    PRIMARY KEY(`year`, `month`, `day`, `hour`, `minute`) 
); 

如何选择所有的SQLite周一的记录?

+1

我会与平日增加一列。 –

+0

检查这个问题:http://stackoverflow.com/questions/4319302/sqlite-return-as-day-of-week – fableal

回答

2
  1. 转换日期成格式understood by SQLite,这就需要用零到所需的四/两位数字段宽度以获得YYYY-MM-DD填充;
  2. 那么就使用strftime('%w')拿到工作日:
SELECT * 
FROM foo 
WHERE strftime('%w', 
       substr('000' || year, -4) || '-' || 
       substr('0' || month, -2) || '-' || 
       substr('0' || day, -2)   ) = '1' 
+0

尼斯'substr'技巧处理零填充,比可怕的案件长度(月)当1然后'0'||月其他月末'我在想。 –

+0

嗨。我终于回到了这个任务,并在实践中尝试了你的答案,实际上它并不起作用 - 说“函数substr()的参数数量错误”。 – Ivan

+0

适合我。你的SQLite早于3.5.2吗? –

相关问题