[SQL] 주 없음을 사용하여 MySQL의에 일주일의 첫날을 얻기
SQL주 없음을 사용하여 MySQL의에 일주일의 첫날을 얻기
어떻게 주 번호를 사용할 수 주어진 일주일의 첫날을받을 수 있나요?
예를 들어 내가 사용할 수있는 유일한 매개 변수로이 WEEKNO (29)를 사용하여 일요일 7월 18일 반환하는 MySQL의 쿼리를 작성하고 싶습니다 WEEK 29.I에서 우리가이 게시물을 작성한다.
해결법
-
==============================
1.당신이 사용할 수있는:
당신이 사용할 수있는:
SELECT STR_TO_DATE('201003 Monday', '%X%V %W');
이것은 당신에게 2010-01-18 것이 주 2010 년 3의 월요일 날짜를 줄 것이다.
또 다른 예:
SELECT STR_TO_DATE('201052 Sunday', '%X%V %W');
당신에게 2010-12-26 될 2010 52 주 일요일 날짜를 줄 것이다.
그리고 마지막으로, 원래 예제를 사용 :
SELECT STR_TO_DATE('201029 Sunday', '%X%V %W');
이 2010-07-18을 제공합니다.
-
==============================
2.이는 일주일에 현재 날짜를 기준으로 일주일의 마지막 날의 첫날을 얻기의 정확한 방법입니다 :
이는 일주일에 현재 날짜를 기준으로 일주일의 마지막 날의 첫날을 얻기의 정확한 방법입니다 :
adddate(curdate(), INTERVAL 1-DAYOFWEEK(curdate()) DAY) WeekStart, adddate(curdate(), INTERVAL 7-DAYOFWEEK(curdate()) DAY) WeekEnd
-
==============================
3.대답은 가장 기본적인 형태로이 같은이 보드의 외모에 지금까지 좋아 :
대답은 가장 기본적인 형태로이 같은이 보드의 외모에 지금까지 좋아 :
SELECT STR_TO_DATE('201003 Monday', '%X%V %W');
이것은 시작하는 좋은 답변,하지만 당신은 당신이 몇 가지 추가 로직을 추가하지 않는 주 () 함수와 연동 해에 사용할 넣어 시작할 때 어떤 일에 고장.
여기에 같은 일의 길고 지저분한 버전이 있지만, 모든 일 (BTW 현재 날짜가이 asnwer에 내장되어 있습니다)에서 작동하도록 보인다 :
SELECT STR_TO_DATE( (IF( CAST(WEEK(NOW(),0) AS UNSIGNED) = 0, (CONCAT( CAST((CAST(YEAR(NOW()) AS UNSIGNED) - 1) AS CHAR), '52 Sunday')), (CONCAT( CAST(YEAR(NOW()) AS CHAR), IF( CAST(WEEK(NOW(),0) AS UNSIGNED) < 10,'0','' ), CAST(WEEK(NOW(),0) AS CHAR), ' Sunday')))), '%X%V %W');
이 혼란이 발생하는 문제를 처리 할 때 특정 요일에 걸쳐 올해 롤. 예를 2011 주이 전년도에 있었다 시작 일요일, 그래서 토요일에 시작했다. 여기에 하드 코딩 예제를 선택이다 :
SELECT STR_TO_DATE( (IF( CAST(WEEK('2011-01-01',0) AS UNSIGNED) = 0, (CONCAT( CAST((CAST(YEAR('2011-01-01') AS UNSIGNED) - 1) AS CHAR), '52 Sunday')), (CONCAT( CAST(YEAR('2011-01-01') AS CHAR), IF( CAST(WEEK('2011-01-01',0) AS UNSIGNED) < 10,'0','' ), CAST(WEEK('2011-01-01',0) AS CHAR), ' Sunday')))), '%X%V %W');
수율 >> '2010-12-26'
SELECT STR_TO_DATE( (IF( CAST(WEEK('2011-01-02',0) AS UNSIGNED) = 0, (CONCAT( CAST((CAST(YEAR('2011-01-02') AS UNSIGNED) - 1) AS CHAR), '52 Sunday')), (CONCAT( CAST(YEAR('2011-01-02') AS CHAR), IF( CAST(WEEK('2011-01-02',0) AS UNSIGNED) < 10,'0','' ), CAST(WEEK('2011-01-02',0) AS CHAR), ' Sunday')))), '%X%V %W');
수율 >> '2011-01-02'
다른 asnwer처럼, 나는 말했다 모든 것은이 같은 그 모습을 게시
SELECT adddate(curdate(), INTERVAL 1-DAYOFWEEK(curdate()) DAY) WeekStart, adddate(curdate(), INTERVAL 7-DAYOFWEEK(curdate()) DAY) WeekEnd;
이 방법은 혼란없이 모든 날짜에 마찬가지로 잘 작동하는 것 같다!
-
==============================
4.이것에 대한 간단하고 동적 인 방법이 될 수 있습니다. 다음 코드를 사용합니다.
이것에 대한 간단하고 동적 인 방법이 될 수 있습니다. 다음 코드를 사용합니다.
SELECT STR_TO_DATE( concat( concat( date_format( CURDATE( ) , '%Y' ) , WEEKOFYEAR( CURDATE( ) ) ) , ' Monday' ) , '%X%V %W' );
-
==============================
5.당신의 주 시작 일요일이고 주말 토요일 인 경우,이 하나를 사용합니다 :
당신의 주 시작 일요일이고 주말 토요일 인 경우,이 하나를 사용합니다 :
SELECT DATE_ADD(CURDATE(), INTERVAL (MOD(DAYOFWEEK(CURDATE())-1, 7)*-1) DAY) AS week_start, DATE_ADD(CURDATE(), INTERVAL ((MOD(DAYOFWEEK(CURDATE())-1, 7)*-1)+6) DAY) AS week_end
MySQL을 테스트.
-
==============================
6.DCP의 대답에 추가 :
DCP의 대답에 추가 :
SELECT STR_TO_DATE('201553 Monday', '%x%v %W')
일주일의 시작일이 월요일 인 경우 당신에게 월요일을 줄 것이다. 형식 지정자는 작은 작성해야합니다. 어떤 수학은 필요하지 않습니다.
-
==============================
7.테스트되지 않은 (I 손에 MySQL이없는) :
테스트되지 않은 (I 손에 MySQL이없는) :
date_add( date_sub(curdate(), interval weekday(curdate()) day), interval ((NUM-weekofyear(curdate()))*7) day)
-
==============================
8.
SELECT CONCAT(RIGHT(STR_TO_DATE(CONCAT(YEARWEEK(NOW()),'Monday'), '%X%V %W'),2),'-', MID(STR_TO_DATE(CONCAT(YEARWEEK(NOW()),'Monday'), '%X%V %W'),6,2),'-', LEFT(STR_TO_DATE(CONCAT(YEARWEEK(NOW()),'Monday'), '%X%V %W'),4)) AS 'Lundi', CONCAT(RIGHT(STR_TO_DATE(CONCAT(YEAR(NOW()), week(now(),3),'Sunday'), '%X%V %W'),2),'-', MID(STR_TO_DATE(CONCAT(YEAR(NOW()), week(now(),3),'Sunday'), '%X%V %W'),6,2),'-', LEFT(STR_TO_DATE(CONCAT(YEAR(NOW()), week(now(),3),'Sunday'), '%X%V %W'),4)) AS 'Dimanche';
from https://stackoverflow.com/questions/3317980/getting-first-day-of-the-week-in-mysql-using-week-no by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 물음표는 SQL 쿼리에 무엇을 상징 하는가? [복제] (0) | 2020.05.01 |
---|---|
[SQL] 어떻게 ROWNUM 같은 모든 테이블에서 열 및 추가 열을 선택합니까? (0) | 2020.05.01 |
[SQL] 어떻게 ORA-01775를 디버깅하는 방법 : 동의어의 반복 체인? (0) | 2020.05.01 |
[SQL] LIMIT 대안과 오라클에서 페이징 오프셋 [중복] (0) | 2020.05.01 |
[SQL] SELECT 문에서 부울 유형을 사용하는 방법 (0) | 2020.05.01 |