SET @dt = '2012-07-01'; -- Last day of the previous month (June 2012) was a Saturday
SELECT CASE DAYOFWEEK(LAST_DAY(@dt-INTERVAL 1 MONTH))
WHEN 1 THEN LAST_DAY(@dt-INTERVAL 1 MONTH)-INTERVAL 2 DAY
WHEN 7 THEN LAST_DAY(@dt-INTERVAL 1 MONTH)-INTERVAL 1 DAY
ELSE LAST_DAY(@dt-INTERVAL 1 MONTH)
END x;
Discover and enjoy a wide range of IT solutions designed to make your digital experience smoother, faster, and more efficient. From software tips to troubleshooting guides, find everything you need in a place. Stay updated, stay secure, and enhance your tech skills with reliable, user-friendly information and resources.
Sunday, July 7, 2013
Mysql get last working day (satursday) of previous month
MYSQL get last working day(friday) of previous month
select LAST_DAY('2013-12-09' - INTERVAL 1 MONTH) -
INTERVAL (CASE WEEKDAY(LAST_DAY('2013-12-09' - INTERVAL 1 MONTH))
WHEN 5 THEN 1
WHEN 6 THEN 2
ELSE 0 END) DAY
INTERVAL (CASE WEEKDAY(LAST_DAY('2013-12-09' - INTERVAL 1 MONTH))
WHEN 5 THEN 1
WHEN 6 THEN 2
ELSE 0 END) DAY
Saturday, July 6, 2013
Mysql find last friday last month---GOOD.
SET @GETLASTM=LAST_DAY('2013-08-01' - INTERVAL 1 MONTH);
SELECT DATE_FORMAT(LAST_DAY(@GETLASTM) - ((7 + WEEKDAY(LAST_DAY(@GETLASTM)) - 4) % 7), '%Y-%m-%d') last_friday;
SELECT DATE_FORMAT(LAST_DAY(@GETLASTM) - ((7 + WEEKDAY(LAST_DAY(@GETLASTM)) - 4) % 7), '%Y-%m-%d') last_friday;
Monday, May 27, 2013
MySQL query get first and last day of month
MySQL query get first and last day of month
# For current month
SELECT DATE_FORMAT(CURDATE(), '%Y-%m-01') AS `First Day Of Current Month`;
SELECT LAST_DAY(CURDATE()) AS `Last Day Of Current Month`;
# For previous month
SELECT DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m-01') AS `First Day Of Previous Month`;
SELECT LAST_DAY(CURDATE() - INTERVAL 1 MONTH) AS `Last Day Of Previous Month`;
# For next month
SELECT DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH, '%Y-%m-01') AS `First Day Of Next Month`;
SELECT LAST_DAY(CURDATE() + INTERVAL 1 MONTH) AS `Last Day Of Next Month`;
SELECT DATE_FORMAT(CURDATE(), '%Y-%m-01') AS `First Day Of Current Month`;
SELECT LAST_DAY(CURDATE()) AS `Last Day Of Current Month`;
# For previous month
SELECT DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m-01') AS `First Day Of Previous Month`;
SELECT LAST_DAY(CURDATE() - INTERVAL 1 MONTH) AS `Last Day Of Previous Month`;
# For next month
SELECT DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH, '%Y-%m-01') AS `First Day Of Next Month`;
SELECT LAST_DAY(CURDATE() + INTERVAL 1 MONTH) AS `Last Day Of Next Month`;
Thursday, March 21, 2013
Friday, March 15, 2013
mysql get last value of row
SELECT Name, Dt, Value
FROM (
SELECT Name, Dt, Value, Name Name2
FROM YourTable
UNION ALL
SELECT '' Name, 'Last_Value', T.Value, T.Name Name2
FROM YourTable T
JOIN (
SELECT Name, MAX(dt) MaxDt
FROM YourTable
GROUP BY Name
) T2 ON T.Name = T2.Name AND T.dt = T2.MaxDt
ORDER BY Name2, Dt, Value
) t
mysql sum each group
CREATE TABLE YourTable (Name varchar(1),
dt datetime,
Value int);
INSERT INTO YourTable VALUES
('A','2013-01-01',3),
('A','2013-01-02',4),
('B','2013-01-04',2),
('B','2013-01-05',8);
SELECT Name, Dt, IF(Name='',summedTotal,Value) Value
FROM (
SELECT @summedTotal:=IF(@prevRow=Name,@summedTotal+Value,Value) summedTotal,
Name, Dt, Value, Name Name2,
@prevRow:=Name
FROM YourTable
JOIN (SELECT @summedTotal:=0) t
UNION ALL
SELECT summedTotal, '' Name, 'Last_Value', T.Value, T.Name Name2, pr
FROM (
SELECT @summedTotal:=IF(@prevRow=Name,@summedTotal+Value,Value) summedTotal,
Name, Dt, Value, Name Name2,
@prevRow:=Name pr
FROM YourTable
JOIN (SELECT @summedTotal:=0) t
) T
JOIN (
SELECT Name, MAX(dt) MaxDt
FROM YourTable
GROUP BY Name
) T2 ON T.Name = T2.Name AND T.dt = T2.MaxDt
ORDER BY Name2, Dt, Value
) t
dt datetime,
Value int);
INSERT INTO YourTable VALUES
('A','2013-01-01',3),
('A','2013-01-02',4),
('B','2013-01-04',2),
('B','2013-01-05',8);
SELECT Name, Dt, IF(Name='',summedTotal,Value) Value
FROM (
SELECT @summedTotal:=IF(@prevRow=Name,@summedTotal+Value,Value) summedTotal,
Name, Dt, Value, Name Name2,
@prevRow:=Name
FROM YourTable
JOIN (SELECT @summedTotal:=0) t
UNION ALL
SELECT summedTotal, '' Name, 'Last_Value', T.Value, T.Name Name2, pr
FROM (
SELECT @summedTotal:=IF(@prevRow=Name,@summedTotal+Value,Value) summedTotal,
Name, Dt, Value, Name Name2,
@prevRow:=Name pr
FROM YourTable
JOIN (SELECT @summedTotal:=0) t
) T
JOIN (
SELECT Name, MAX(dt) MaxDt
FROM YourTable
GROUP BY Name
) T2 ON T.Name = T2.Name AND T.dt = T2.MaxDt
ORDER BY Name2, Dt, Value
) t
Subscribe to:
Posts (Atom)