2016-04-22 766 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

相关问题