[SQL] 나는 MySQL은 날짜에서 월 얻는 방법
SQL나는 MySQL은 날짜에서 월 얻는 방법
나는이 같은 문으로 MySQL의 결과를 가져올 수 있어야합니다 :
SELECT *
FROM table
WHERE amount > 1000
하지만 ...이 같은 노력했다 (사용자의 입력에 따라) 년, 월 일정에 구속 결과를 가져 오기 할 :
SELECT *
FROM table
WHERE amount > 1000
AND dateStart = MONTH('$m')
...는 $ m는 한 달에 존재하지만 오류를했다.
이 표에서, 실제로 두 날짜가 :의 startDate와 endDate가를하지만 난의 startDate에 집중하고있다. 입력 값은 월, 한 해가 될 것입니다. 어떻게 그 해의 해당 월을 기준으로 결과를 얻을 SQL 문 I 구문을합니까?
해결법
-
==============================
1.당신은 가까웠다 - 비교 뒤쪽으로는 (의 startDate은 DATETIME 또는 TIMESTAMP 데이터 유형입니다 가정) 가지고 :
당신은 가까웠다 - 비교 뒤쪽으로는 (의 startDate은 DATETIME 또는 TIMESTAMP 데이터 유형입니다 가정) 가지고 :
SELECT * FROM table WHERE amount > 1000 AND MONTH(dateStart) = {$m}
인덱스를 사용할 수 없습니다 열에 기능을 사용하기 때문에, 더 나은 접근 방식과 STR_TO_DATE 기능 BETWEEN 사용하는 것입니다 :
WHERE startdate BETWEEN STR_TO_DATE([start_date], [format]) AND STR_TO_DATE([end_date], [format])
구문을 포맷의 문서를 참조하십시오.
-
==============================
2.월 () 함수를 사용합니다.
월 () 함수를 사용합니다.
select month(now());
-
==============================
3.이 시도:
이 시도:
SELECT * FROM table WHERE amount > 1000 AND MONTH(dateStart) = MONTH('$m') AND YEAR(dateStart) = YEAR('$m')
-
==============================
4.EG
EG
$date = sprintf("'%04d-%02d-01'", $year, $month); $query = " SELECT x,y,dateStart FROM tablename WHERE AND amount > 1000 AND dateStart >= $date AND dateStart < $date+Interval 1 month "; mysql_query($query, ...
이것은 예를 들어, 같은 쿼리를 작성합니다
WHERE AND amount > 1000 AND dateStart >= '2010-01-01' AND dateStart < '2010-01-01'+Interval 1 month
+ 간격은 1 개월 DATE_ADD의 대안이다 ().
SELECT 날짜 ( '2010-01-01'+ 간격 1 개월) -> 2010-02-01 SELECT 날짜 ( '2010-12-01'+ 간격 1 개월) -> 2011-01-01 이 방법 당신은 항상 다음 달 1 일을 얻는다. 당신이 원하는 기록은 해당 날짜 전에 dateStart을 가지고 있지만 한 후 / 당신의 sprintf에 전달 한 달 (연도)의 첫 날 ()에 동일해야합니다. '2010-01-01'+ 간격 1 개월 행 사이 변경되지 않습니다. MySQL은 한 번만 기간을 계산합니다 및 검색을위한 인덱스를 활용할 수 있습니다.
-
==============================
5.이 시도
이 시도
SELECT * FROM table WHERE amount > 1000 AND MONTH(datestart) GROUP BY EXTRACT(YEAR_MONTH FROM datestart)
-
==============================
6.(다음 날이 문자열을 변환 날짜 필드가 텍스트)이있는 경우를보십시오 :
(다음 날이 문자열을 변환 날짜 필드가 텍스트)이있는 경우를보십시오 :
SELECT * FROM `table_name` WHERE MONTH(STR_TO_DATE(date,'%d/%m/%Y'))='11' //This will give month number MONTH(STR_TO_DATE(date,'%d/%m/%Y')) //If its return 11 then its November // Change date format with your date string format %d/%m/%Y
-
==============================
7.MySQL은 5.7, MySQL은 5.6, MySQL은 5.5, MySQL은 5.1, 5.0, MySQL은 4.1, MySQL은 4.0, 3.23 :의 작품
MySQL은 5.7, MySQL은 5.6, MySQL은 5.5, MySQL은 5.1, 5.0, MySQL은 4.1, MySQL은 4.0, 3.23 :의 작품
from https://stackoverflow.com/questions/2039839/how-do-i-get-month-from-date-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 저장 프로 시저에서 SQL 서버 변수 범위 (0) | 2020.06.11 |
---|---|
[SQL] SQL 서버, 할 수없는 기본 키 필드에 널 (null)입니까? (0) | 2020.06.11 |
[SQL] 어떻게하는 SqlCommand에 설정된 격리 수준에 /도록 SqlConnection은, 트랜잭션 (transaction)로 초기화 (0) | 2020.06.11 |
[SQL] 오라클 날짜 TO_CHAR ( '월 DD, YYYY')는 거기에 여분의 공백이 (0) | 2020.06.11 |
[SQL] 중복 행을 제거 SQL 테이블에서 (여러 열에서 값을 기준으로) (0) | 2020.06.11 |