MySQL 检查日期时间列是否在周末期间

标签 mysql datetime

我在数据库中有一个包含日期时间列的表。有没有一种方法可以编写查询来确定记录是否在周末期间?

我想显示所有记录,并在每个结果行中有一个额外的列来显示周末,如果它符合(周五 1730 小时之后)或(周日 2359 小时之前)的标准。

以下是我目前拥有的,但似乎有些不对劲。 :( 任何帮助将不胜感激。:)

SELECT recordTime, DATE_FORMAT(recordTime, "%W %w %T"), (( (DATE_FORMAT(recordTime, "%T") > '17:30:00' AND DAYOFWEEK(recordTime)=6)
    AND (DATE_FORMAT(recordTime, "%T") < '23:59:59' AND DAYOFWEEK(recordTime)=7) )
    OR (DATE_FORMAT(recordTime, "%T") < '23:59:59' AND DAYOFWEEK(recordTime)=0)) AS Weekend
FROM `waitrecord`

最佳答案

你的逻辑是错误的。一天不能同时是工作日 6 和工作日 7。

条件应该是

DAYOFWEEK(recordTime) = 7
or DAYOFWEEK(recordTime) = 1
or (DATE_FORMAT(recordTime, "%T") > '17:30:00' AND DAYOFWEEK(recordTime) = 6)

编辑 DAYOFWEEK实际上返回星期日的 1 和星期六的 7(与基于零的 DATE_FORMAT 相反)

关于MySQL 检查日期时间列是否在周末期间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142372/

相关文章:

mysql - 使用此 sql 搜索在 Rails 中构建复制关联

在没有明显错误的情况下,用户创建期间的 MySql 语法错误

php - 今天的日期是否与数据库 PHP/MYSQL 中的现有范围相交

python - 计算 Pandas 组中的平均时间差 Python

java - 单独更改 JodaDate 中的偏移量,而不更改日期和时间信息

python - MySQLdb Python 执行不返回表

mysql - 通过 ssl 连接到 mysql 的最佳 Node.js mysql 模块是什么?

mysql - 无法使用正确的密码登录mysql服务器

sql - oracle中如何将数字转换为日期时间

linq - Entity Framework : Best way to query for a set of dates using Linq