我有一个有100000行的MySQL表。
每行只有一个名为unixtime
的列,其中包含不同的unix时间戳。数据类型为long
。
除了unix时间戳是星期一的行之外,您将使用什么MySQL查询来删除所有行?
MySQL服务器默认时区的星期一。
最佳答案
使用UNIXTIME和DAYNAME中的函数
FROM_UNIXTIME将UNIXTIME戳记转换为DATETIME格式。
DAYNAME需要DATETIME格式来获取days名称。为什么使用DAYNAME函数而不是DAYOFWEEK函数?DAYNAME(...) <> 'Monday'
更易于阅读,然后DAYOFWEEK(..) <> 2
这个问题不清楚您是想过滤掉记录还是真的从表中删除记录
因此,我包含了筛选记录的select查询和真正从表中删除这些记录的delete查询。
选择查询
SELECT
*
FROM
[table]
WHERE
DAYNAME(FROM_UNIXTIME(unixtime)) <> 'Monday'
删除查询
DELETE
*
FROM
[table]
WHERE
DAYNAME(FROM_UNIXTIME(unixtime)) <> 'Monday'