我有一张桌子,列出了所有假期/周末日。是否有查询可以帮助我找到已发生的最后一个工作日(不是假期或周末)?
示例:如果是星期天,我想要上周五的日期。假设星期五不是假日。
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`)
)
答案 0 :(得分:2)
试试这个:
SELECT max(dt)
FROM calendar_table
where dt <= curdate()
and isHoliday = 0
and isWeekDay = 1;
您可能需要稍微调整一下,因为您还没有发布每个列的商店。
但基本的,选择所有指示告诉它今天之前的工作日期的最大日期。