2016-04-22 78 views
2

我的日期存儲在我的數據庫中的格式爲dd/mm/yyyy,我只希望顯示日期等於或大於今天的項目。在SQLite中選擇日期大於或等於今天的日期

我試過了date(fixtures.date) >= date('now')但我沒有結果。

下面是我的查詢,任何幫助將不勝感激

SELECT fixtures.id, 
     fixtures.team_1_id, 
     fixtures.team_2_id, 
     fixtures.date, 
     fixtures.time, 
     fixtures.pitch, 
     teams.team_name, 
     teams_1.team_name AS awayTeam, 
     leagues.league_name 
FROM fixtures 
     INNER JOIN teams 
       ON fixtures.team_1_id = teams.id 
     INNER JOIN teams AS teams_1 
       ON fixtures.team_2_id = teams_1.id 
     INNER JOIN teams_vs_leagues 
       ON teams.id = teams_vs_leagues.team_id 
     INNER JOIN leagues 
       ON teams_vs_leagues.league_id = leagues.id 
WHERE date(fixtures.date) >= date('now') 
ORDER BY fixtures.date DESC 
+0

'我已存儲的日期在我的數據庫在DD/MM/YYYY format'爲什麼不正常的UNIX時間戳?使用它的任何處理都容易得多 – pskink

+0

你不應該使用'date'作爲列名,因爲它是'Sqlite'的關鍵字.. [[visit - read first line](http://www.sqlite。組織/ lang_keywords.html) – Bharatesh

回答

1

你爲什麼說你的日期是在DD/MM/YYYY格式的店嗎?據SQLite docs

1.2日期和時間數據類型

SQLite沒有存儲類存儲日期和/或時間預留。取而代之的是,SQLite的的內置日期和時間函數能夠存儲日期和時間爲TEXT,REAL,或整數值:

  1. TEXT爲ISO8601字符串(「YYYY-MM-DD HH:MM: SS.SSS「)。

  2. 作爲朱利安天數的實際數字,自公元4714年11月24日中午至格林威治中午以來的天數。根據預測的公曆。

  3. INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以來的秒數。

應用程序可以選擇存儲日期和時間的任何格式,並使用自如內置的日期和時間函數的格式之間的轉換。

基本上這個查詢將行不通

select 1 where '01-08-2016' >= date('now') 

但這將

select 1 where '2016-08-01'>= date('now') 

所以,你可以驗證,如果你的約會fixtures.date是格式爲 'YYYY-MM-DD',否則你查詢將不起作用。此外請記得使用date('now', 'localtime')來獲得當地時間。

如果您的日期以及格式化你可以嘗試這樣做

SELECT fixtures.id 
FROM fixtures 
WHERE fixtures.date >= date('now') 

如果你得到的結果與此,然後連接並不匹配任何行。

欲瞭解更多信息,您可以檢查此answer

相關問題