mysql - LIKE 和 BETWEEN 使用 Haxe 查询 SQL

标签 mysql sql sql-like haxe between

我正在尝试显示一周内排行榜的分数。

目前我使用以下查询某些每日分数:

public static function displayDay(day:String)
{
    queryLeaderboard("SELECT * FROM gamedata WHERE ts LIKE '%-" + day + "%' ORDER by scoreDifference DESC LIMIT 10");
}

这将显示格式为 2016-11-25 20:04:47 的时间戳中的分数,因此可以在“-”之后找到任何内容。我可以很好地处理年度、月度和每日分数。

但是,我正在尝试查找每周分数。

我目前有以下内容:

public static function displayWeek()
{
    var dateNow:Date = Date.now();

    Lib.print(dateNow);
    Lib.print("<br>");

    Lib.print(dateNow.getDate());
    Lib.print("<br>");

    var weekAgo:Int = dateNow.getDate() - 7;
    Lib.print(weekAgo);
    Lib.print("<br>");

    var query:String = "SELECT * FROM gamedata WHERE ts BETWEEN LIKE '%-" + weekAgo + "%' AND LIKE '%-" + dateNow.getDate() + "%' ORDER by scoreDifference DESC LIMIT 10";
    Lib.print(query);
    queryLeaderboard(query);
}

查询如下:

SELECT * FROM gamedata WHERE ts BETWEEN LIKE '%-19%' AND LIKE '%-26%' ORDER by scoreDifference DESC LIMIT 10

根据我对 SQL 查询的了解(有限),它不喜欢尝试在彼此之间查找字符串值?但我相信格式是来自 Haxe 的 SDateTime。

我该怎么做?

class GameData extends Object
{
    public var id:SId;
    public var username:SString<32>;
    public var countryA2:SString<32>;
    public var scoreFor:SInt;
    public var scoreAgainst:SInt;
    public var scoreDifference:SInt;
    public var ts:SDateTime;
}

最佳答案

尝试使用这样的SQL:

...
var query:String = "SELECT * FROM gamedata WHERE ts 
BETWEEN '" + Date.fromTime(dateNow.getTime()-7*24*3600*1000).toString() + "' 
AND '" + dateNow.toString() + "' 
ORDER by scoreDifference DESC LIMIT 10";
Lib.print(query);
queryLeaderboard(query);
...

在 MySQL 中,如果您使用 BETWEEN 函数,则必须至少传递数据对象的字符串表示形式。如果这样做,则不再需要 LIKE。此外,如果您查看 getDate() - 它返回 Int,因此如果您从星期一 (1) 中减去 7,您将得到 -6。相反,我建议从转换为时间戳表示的当前时间减去 7*24*3600 秒。

查看 Haxe 文档 API.HAXE.ORG/DATE

希望对您有所帮助。

编辑
取决于平台的 getTime() 具有每秒(不是毫秒)的精度。这就是为什么可以在乘以或不乘以 1000 的情况下实现上述答案。

关于mysql - LIKE 和 BETWEEN 使用 Haxe 查询 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40824155/

相关文章:

python - 在 SQLite (Python) 中将变量字符串传递给 LIKE

mysql - 自定义 MySql 查询

php - 我可以从批量插入中检索 lastInsertId 吗?

sql - 将 PostgreSQL 表连接到另一个表的列

mysql - Sql - 我可以搜索记录中的特定数字吗?

MYSQL 如果不喜欢 A 那么喜欢 B

php - 如何正确使用distinct

java - 如何将 SQL 中的 LONGBLOB 图像制作成缓冲图像以显示在标签中

SQL:在 SQL Server 2012 中使用外连接

python - 检测源代码中的 SQL 注入(inject)