2012-08-02 75 views
1

讓我們只是說我有一個人名和他們的生日(日期和時間)表。我希望能夠使用SQLite的以下SQL爲今天查找人們的生日(日期和時間)。什麼是Sqlite SQL語句只查找今天的記錄?

SELECT * FROM Btable WHERE Bday = date('yyyy-MM-dd') 

但是,它總是返回nil數據集。我是否也需要包括時間?

究竟是什麼錯我的SQL語句?如果是這樣,那麼查詢今天日期的正確SQL語句是什麼。

UPDATE:

下面是使用BETWEEN邏輯我實際的SQL語句:

SELECT * 
FROM Alarms 
WHERE ALARMSTATE IN (0,1,2) 
    AND ALARMPRIORITY IN (0,1,2,3,4) 
    AND ALARMGROUP IN (0,1,2,3,4,5,6,7) 
    AND ALARMTIME BETWEEN date(2012-08-02) 
        AND date(2012-08-3) 
ORDER BY ALARMTIME DESC 
+2

生日不是在同一年。您可能想要比較日月,而不是年。 – 2012-08-02 14:23:39

+0

@NikolaMarkovinović,是的,這是一個不好的例子,但你明白了。 :)我可以說這個表是一個報警日誌,我想查找今天的所有報警日誌。 – ThN 2012-08-02 14:30:47

+0

;-D在這種情況下,你需要或者截斷'BDay'僅日期,或者更好,過濾器,其中BDAY> = my_date和BDAY <(my_date + 1天)。不幸的是我不使用sqlite,所以我無法提供確切的語法。 – 2012-08-02 14:34:12

回答

0

這裏就是我的回答。

因爲我的專欄ALARMTIME是文本,我能查詢我的桌子下面的SQL語句和檢索數據集,我期待的。

SELECT * 
FROM Alarms 
WHERE ALARMSTATE IN (0,1,2) 
    AND ALARMPRIORITY IN (0,1,2,3,4) 
    AND ALARMGROUP IN (0,1,2,3,4,5,6,7) 
    AND ALARMTIME LIKE "2012/08/01%" 
    ORDER BY ALARMTIME DESC 

我根本無法將我的ALARMTIME文本轉換爲日期時間類型。

0

我沒有一個實例紡達但這應該工作。

SELECT * FROM Btable WHERE Bday >= julianday(date('now'))); 

這應該返回一個字符串,像這樣:

2012-08-02 00:00:00 

是錯誤與查詢的是,它可能會丟失毫秒或一些其它精密這將始終評估爲假的東西。