讓利,存在一些數據的數據庫main_table
。例如:
CREATE TABLE `main_table` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Date` date NOT NULL,
`Description` varchar(45) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT main_table
(`Date`, Description)
VALUES
('2017-01-02','The first record'),
('2017-01-05','The second record'),
('2017-01-11','The third record'),
('2017-01-17','The fourth record');
創建一個用戶自定義函數,該函數返回與指定日期相同的特定日期的日期。使用CREATE FUNCTION語法:
DELIMITER $$
CREATE FUNCTION `GET_DAY_OF_WEEK` (`date` DATE, `day` TINYINT UNSIGNED)
RETURNS DATE
BEGIN
RETURN `date`- INTERVAL WEEKDAY(`date`) + 1 DAY + INTERVAL `day` DAY;
END$$
DELIMITER ;
如果本週星期一開始,然後使用1
週一和7
週日。如果您的星期在星期日開始,則週日使用0
,週六使用6
。例如,我的一週由星期一開始,我想上週三爲止,然後
SELECT GET_DAY_OF_WEEK('2017-06-03', 3);
回報'2017-05-31'
。如果你正在使用MySQL或SQL Server
SELECT
ID,
WEEKOFYEAR(`Date`) AS WeekNum,
GET_DAY_OF_WEEK(`Date`, 1) AS WeekStarted,
GET_DAY_OF_WEEK(`Date`, 7) AS WeekFinished,
Description
FROM main_table;
查詢結果將是
ID WeekNum WeekStarted WeekFinished Description
1 1 2017-01-02 2017-01-08 'The first record'
2 1 2017-01-02 2017-01-08 'The second record'
3 2 2017-01-09 2017-01-15 'The third record'
4 3 2017-01-16 2017-01-22 'The fourth record'
首先,你需要決定:
因此獲得每週的
main_table
記錄,你可以使用下面的MySQL查詢。它們不是同一件事。那麼你需要發佈足夠的信息,以便其他人不會猜測你想要什麼。表格定義,樣本數據和基於樣本數據的期望輸出。 –也要注意,美國的週數對於其他地區是不同的,例如 – GuidoG
請給出輸入參數值和預期結果的示例。 – Alexander