MMc*_*McK 10 sqlite android android-sqlite android-studio
我将日期以某种dd/mm/yyyy
格式存储在我的数据库中,我希望只显示日期等于或大于今天的项目。
我试过 WHEREdate(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
Run Code Online (Sandbox Code Playgroud)
ing*_*vin 12
为什么你说你的日期以 dd/mm/yyyy 格式存储?根据SQLite 文档
1.2 日期和时间数据类型
SQLite 没有专门用于存储日期和/或时间的存储类。相反,SQLite 的内置日期和时间函数能够将日期和时间存储为 TEXT、REAL 或 INTEGER 值:
TEXT 作为 ISO8601 字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
REAL 作为儒略日数,根据预测的格里高利历,自公元前 4714 年 11 月 24 日格林威治中午以来的天数。
INTEGER 作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。
应用程序可以选择以任何这些格式存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换。
基本上这个查询不起作用
select 1 where '01-08-2016' >= date('now')
Run Code Online (Sandbox Code Playgroud)
但这会
select 1 where '2016-08-01'>= date('now')
Run Code Online (Sandbox Code Playgroud)
那么您能否验证您的日期fixtures.date
格式是否为“yyyy-MM-dd”,否则您的查询将不起作用。另外记得使用date('now', 'localtime')
来获取您的本地时间。
如果您的日期格式正确,您可以尝试执行以下操作
SELECT fixtures.id
FROM fixtures
WHERE fixtures.date >= date('now')
Run Code Online (Sandbox Code Playgroud)
如果你确实得到了这个结果,那么连接不匹配任何行。
有关更多信息,您可以查看此答案
归档时间: |
|
查看次数: |
11625 次 |
最近记录: |