Tuesday, July 8, 2014

Example of control flow to select and update in MySQL




In bus_leaves table, I have columns
LeaveStartDate and StartTerm
StartTerm has four digits, the first digit is 1, the second and third digit are from last two digits of year,
 the forth digit (last)  is equal to 1for moth between 1-4, 4 for month between 5-8, 7 for month between 9-12.
 LeaveStartDate is date type and has format 2013-05-01
I want to convert  LeaveStartDate to StartTerm
1. First using SELECT to see convert result:
SELECT CASE WHEN MONTH(DATE(LeaveStartDate))>= 1 AND MONTH(DATE(LeaveStartDate))<=4 THEN (YEAR(DATE(LeaveStartDate)) - 1900) * 10 + 1 WHEN MONTH(DATE(LeaveStartDate))>= 5 AND MONTH(DATE(LeaveStartDate))<=8 THEN (YEAR(DATE(LeaveStartDate)) - 1900) * 10 + 4 WHEN MONTH(DATE(LeaveStartDate))>= 9 AND MONTH(DATE(LeaveStartDate))<=12 THEN (YEAR(DATE(LeaveStartDate)) - 1900) * 10 + 7 END AS SenateEffectiveTerm FROM bus_leaves LIMIT 0, 25 

2. Update StarTerm:
 UPDATE  bus_leaves SET  StartTerm =CASE WHEN MONTH(DATE(LeaveStartDate))>= 1 AND MONTH(DATE(LeaveStartDate))<=4 THEN (YEAR(DATE(LeaveStartDate)) - 1900) * 10 + 1 WHEN MONTH(DATE(LeaveStartDate))>= 5 AND MONTH(DATE(LeaveStartDate))<=8 THEN (YEAR(DATE(LeaveStartDate)) - 1900) * 10 + 4 WHEN MONTH(DATE(LeaveStartDate))>= 9 AND MONTH(DATE(LeaveStartDate))<=12 THEN (YEAR(DATE(LeaveStartDate)) - 1900) * 10 + 7 END


No comments:

Post a Comment