2014-05-19 6 views
1

나는 DAYOFWEEK()의 날짜를 알고 있다고 가정하고 WEEK()YEAR() 개의 숫자를 알고 있다고 가정합니다. 이 값들 중 날짜를 포맷 할 수 있습니까? mysql?요일 + 요일 기준일을 기준으로 날짜 찾기 mysql

+0

당신이 (또는 생성하고자하는) 경우 [달력 테이블 (http://blog.jontav.com/post/9380766884/calendar-tables-are-incredibly-useful-in-sql) 참으로 쉬운 일이 될 것입니다. – GarethD

+0

답변 해 주셔서 감사합니다.하지만 가능하지 않다고 가정 해보십시오. 그것은 질의의 형태로 행해질 수 있습니까? –

+0

왜 RDBMS를 사용 하시겠습니까? – Strawberry

답변

1

당신은 갈 : DAYOFWEEK는 7 일 (일요일)에서 진행하는 반면

SELECT STR_TO_DATE('2014-20-2','%Y-%U-%w')-INTERVAL 1 DAY n; 
+------------+ 
| n   | 
+------------+ 
| 2014-05-19 | 
+------------+ 

간격 비트, 6 일 (일) % (W)가 0으로 요일을 해석한다는 사실을 설명하는 것입니다 - 그림을 이동!!!

% U도 WEEK()와 약간 다르게 작동 할 수 있습니다. 위의 내용은 옳은 답을주는 것으로 보이므로 더 자세히 살펴 보지 않았습니다.

+0

이것은 매우 유용하게 보입니다. 그것은 내가 원하는 것만은 아니지만 그것이 내 질문을 어떻게 표현했는지의 본질 때문입니다. 나는 다시보고 할 것이다. –

+1

우리는 '유용한'답변을 upvote 할 수 있습니다 :-) – Strawberry

+0

Roger that. ;-) –

0

저는 SQL에 익숙하지 않아서 문제를 해결하는 데 사용할 논리를 작성합니다.

올해의 연도 (YEAR())를 알 수 있습니다. 우리는 1.1.1900이라는 사실을 사용할 수 있습니다. 매주 어떤 요일이 1.1인지 계산하는 것이 월요일이었습니다. 올해의. 그런 다음 현재 날짜 (WEEK())에있는 날짜를 계산할 수 있습니다. 다시 1.1.1900이라는 사실을 사용하십시오. 우리는 매주 어떤 요일인지를 계산하여 현재 요일 (DAYOFWEEK())과 비교할 수있었습니다.

다시 말하지만 SQL은 좋지 않으므로 매우 비효율적 인 솔루션 일 수 있습니다. 그러나 적어도 이것이 아이디어를 제공하고 솔루션을 찾을 수 있기를 바랍니다. 행운을 빌어 요. 여기

0
SELECT 
DATE_FORMAT(FROM_UNIXTIME(1400463204), '%Y-%m-%d 00:00:00') AS date, 
STR_TO_DATE(DATE_FORMAT(FROM_UNIXTIME(1400463204), CONCAT(YEAR(FROM_UNIXTIME(1400463204)-INTERVAL 1 YEAR),'-','%U-%w')), '%Y-%U-%w %H:%i:s') AS samedaylastyear, 
DAYOFWEEK(DATE_FORMAT(FROM_UNIXTIME(1400463204), '%Y-%m-%d 00:00:00')) AS check1, 
DAYOFWEEK(STR_TO_DATE(DATE_FORMAT(FROM_UNIXTIME(1400463204), CONCAT(YEAR(FROM_UNIXTIME(1400463204)-INTERVAL 1 YEAR),'-','%U-%w')), '%Y-%U-%w %H:%i:s')) AS check2