MySQL找到最后一个工作日

时间:2016-02-07 08:52:23

标签: mysql

我有一张桌子,列出了所有假期/周末日。是否有查询可以帮助我找到已发生的最后一个工作日(不是假期或周末)?

示例:如果是星期天,我想要上周五的日期。假设星期五不是假日。

http://sqlfiddle.com/#!9/f474e4

以下结构如下:

CREATE TABLE `calendar_table` (
  `dt` date NOT NULL,
  `y` smallint(6) DEFAULT NULL,
  `q` tinyint(4) DEFAULT NULL,
  `m` tinyint(4) DEFAULT NULL,
  `d` tinyint(4) DEFAULT NULL,
  `dw` tinyint(4) DEFAULT NULL,
  `monthName` varchar(9) DEFAULT NULL,
  `dayName` varchar(9) DEFAULT NULL,
  `w` tinyint(4) DEFAULT NULL,
  `isWeekday` binary(1) DEFAULT NULL,
  `isHoliday` binary(1) DEFAULT NULL,
  `holidayDescr` varchar(32) DEFAULT NULL,
  `tradingHoliday` binary(1) DEFAULT NULL,
  PRIMARY KEY (`dt`)
)

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT max(dt) 
FROM calendar_table
where dt <= curdate()
and isHoliday = 0
and isWeekDay = 1;

您可能需要稍微调整一下,因为您还没有发布每个列的商店。

但基本的,选择所有指示告诉它今天之前的工作日期的最大日期。