Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get the first day of the week of a date in mysql?

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?

like image 631
davidahines Avatar asked Aug 04 '11 15:08

davidahines


People also ask

How do I get the day of the week from a timestamp in SQL?

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.

How do I get Monday Tuesday in SQL?

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.

Is there a week function in SQL?

MySQL WEEK() Function The WEEK() function returns the week number for a given date (a number from 0 to 53).


1 Answers

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

like image 72
Ruslan Avatar answered Oct 26 '22 12:10

Ruslan