2016-02-07 43 views
-2

我有一個列出所有節假日/週末天的表。有沒有一個查詢可以幫助我找到發生的最後一個工作日(而不是假期或週末)?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`) 
) 
+0

我已經有這樣的東西。但我需要找到發生的最後一個工作日。 –

+1

什麼是表格結構?如果我們不知道哪些列告訴我們什麼,我們如何能夠幫助您。 – sagi

+1

'假設星期五不是假期'你知道它是依賴於國家嗎? – lad2025

回答

2

試試這個:

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

你也許不得不調整它一點點,因爲你還沒有發佈每個專欄存儲的內容。

但是,基本的,選擇所有指示告訴它在今天之前範圍內的工作日期的最大日期。

+0

我懷疑是週日= 1,但是,應該這樣做。 –

+0

@JoachimIsaksson我懷疑你是對的:) – sagi

相關問題