在SQLite中选择日期大于或等于今天的日期
问题描述:
我的日期存储在我的数据库中的格式为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
答
你为什么说你的日期是在DD/MM/YYYY格式的店吗?据SQLite docs
1.2日期和时间数据类型
SQLite没有存储类存储日期和/或时间预留。取而代之的是,SQLite的的内置日期和时间函数能够存储日期和时间为TEXT,REAL,或整数值:
TEXT为ISO8601字符串(“YYYY-MM-DD HH:MM: SS.SSS“)。
作为朱利安天数的实际数字,自公元4714年11月24日中午至格林威治中午以来的天数。根据预测的公历。
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
'我已存储的日期在我的数据库在DD/MM/YYYY format'为什么不正常的UNIX时间戳?使用它的任何处理都容易得多 – pskink
你不应该使用'date'作为列名,因为它是'Sqlite'的关键字.. [[visit - read first line](http://www.sqlite。组织/ lang_keywords.html) – Bharatesh