首页 > 解决方案 > 日期函数的问题

问题描述

我是 SQL 的初学者,正在研究 SQLite。

当我在 Dates 旁边使用 between 或 >=/< 时,我的计算值的查询/子查询返回空值或根本没有值。我不认为这是语法错误,但也许我有某种冲突的条件?

预期结果是满足条件的值的计数,并且在列出的日期之间。条件还包括所选日期之间的聚合。

作为参考,我的日期值以 DD/MM/YYYY 格式插入,但即使我在查询中将 DD/MM/YYYY 与 YYYY/MM/DD 或 YYYY-MM-DD 交换,问题仍然存在。编辑:我的日期值的数据类型是“日期”,这实际上可能是一个问题,因为我认为我可能犯了一个语法错误,将行命名为与函数和数据类型相同?

SELECT COUNT (*) as "Number of Games",
    CASE
        WHen ftp > .968077144 then "Signifigantly Above League Average"
        WHEN ftp > .884497663 then "Firmly Above League Average"
        WHEN ftp > .800918182 then "Slighty Above League Average"
        WHEN ftp > .717338701 then "Slightly Below League Average"
        WHen ftp > .63375922 then "Firmly Below League Average"
        when ftp > .565 then "Signifigantly Below League Average"
        Else "Hack A Simmons"
        End AS "Free Throw Percentage"
        from BStats
        Where GS = 1 and date BETWeen '17/10/2017' and '18/04/2018'
        GROUP BY "Free Throw Percentage"
        HAVING ast >= (SELECT avg(ast) from BStats where GS = 1 and date BETWEEN '17/10/2017' and '18/04/2018');

修改后的代码:我将 Dates 的列名更改为 playdate 以解决任何保留名称问题。我还从 between 函数切换到 >= 和 >。我应该将日期的数据类型更改为其他类型吗?我仍然收到空回复。谢谢您的帮助!

SELECT COUNT (*) as "Number of Games",
    CASE
        WHen ftp > .968077144 then "Signifigantly Above League Average"
        WHEN ftp > .884497663 then "Firmly Above League Average"
        WHEN ftp > .800918182 then "Slighty Above League Average"
        WHEN ftp > .717338701 then "Slightly Below League Average"
        WHen ftp > .63375922 then "Firmly Below League Average"
        when ftp > .565 then "Signifigantly Below League Average"
        Else "Hack A Simmons"
        End AS "Free Throw Percentage"
        from BStats
        Where GS = 1 and playdate >= '2017-10-17' and playdate < '2018-04-18'
        GROUP BY "Free Throw Percentage"
        HAVING ast >= (SELECT avg(ast) from BStats where GS = 1 and playdate >= '2017-10-17' and playdate < '2018-04-18');

标签: sqlsqlitedate

解决方案


这实际上取决于您的“日期”列的数据类型。另外,您的专栏名称是“日期”吗?它是 SQL 中的保留字,因此也可能会造成一些问题。如果给您带来麻烦,请尝试将其括在括号中。


推荐阅读