Suppose I have 2011-01-03 and I want to get the first of the week, which is sunday, which is 2011-01-02, how do I go about doing that?
The reason is I have this query:
select YEAR(date_entered) as year, date(date_entered) as week, <-------This is what I want to change to select the first day of the week. SUM(1) as total_ncrs, SUM(case when orgin = picked_up_at then 1 else 0 end) as ncrs_caught_at_station from sugarcrm2.ncr_ncr where sugarcrm2.ncr_ncr.date_entered > date('2011-01-01') and orgin in( 'Silkscreen', 'Brake', 'Assembly', 'Welding', 'Machining', '2000W Laser', 'Paint Booth 1', 'Paint Prep', 'Packaging', 'PEM', 'Deburr', 'Laser ', 'Paint Booth 2', 'Toolpath' ) and date_entered is not null and orgin is not null AND(grading = 'Minor' or grading = 'Major') and week(date_entered) > week(current_timestamp) -20 group by year, week(date_entered) order by year asc, week asc
And yes, I realize that origin is spelled wrong but it was here before I was so I can't correct it as too many internal apps reference it.
So, I am grouping by weeks but I want this to populate my chart, so I can't have all the beginning of weeks looking like different dates. How do I fix this?
For this, we will use the dayofweek() function. This function takes a timestamp data type as the argument and returns the day of the week. The return value is an integer type ranging from 1 to 7: where 1 is Sunday, and seven is Saturday inclusive.
MySQL WEEKDAY() Function The WEEKDAY() function returns the weekday number for a given date. Note: 0 = Monday, 1 = Tuesday, 2 = Wednesday, 3 = Thursday, 4 = Friday, 5 = Saturday, 6 = Sunday.
MySQL WEEK() Function The WEEK() function returns the week number for a given date (a number from 0 to 53).
If the week starts on Sunday do this:
DATE_ADD(mydate, INTERVAL(1-DAYOFWEEK(mydate)) DAY)
If the week starts on Monday do this:
DATE_ADD(mydate, INTERVAL(-WEEKDAY(mydate)) DAY);
more info
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With