mysql에서 해당 달의 첫날을 얻는 방법은 무엇입니까?
저는 매년 해당하는 달의 첫날을 받고 싶습니다.예를 들어 사용자가 '2010-06-15'를 선택한 경우 '2010-06-15'가 아닌 '2010-06-01'부터 쿼리를 실행해야 합니다.
선택한 날짜로부터 첫날을 계산하는 방법을 알려주세요.현재 다음 mysql select 쿼리를 사용하여 desirable을 얻으려고 합니다.
Select
DAYOFMONTH(hrm_attendanceregister.Date) >=
DAYOFMONTH(
DATE_SUB('2010-07-17', INTERVAL - DAYOFMONTH('2010-07-17') + 1 DAY
)
FROM
hrm_attendanceregister;
감사합니다.
이것이 당신이 찾고 있는 것입니까?
select CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE);
MySQL에서 제공하는 LAST_DAY 함수를 사용하여 임의의 월의 마지막 날을 검색할 수 있습니다.그것은 간단합니다.
SELECT LAST_DAY('2010-06-15');
반환:
2010-06-30
유감스럽게도 MySQL은 다음 기능을 제공하지 않습니다.FIRST_DAY
(이유는 확실하지 않습니다) 월의 첫 번째 날을 취득하는 함수입니다.그러나 마지막 날을 지정하면 하루를 더하고 달을 빼면 첫날을 얻을 수 있습니다.따라서 커스텀 함수를 정의할 수 있습니다.
DELIMITER ;;
CREATE FUNCTION FIRST_DAY(day DATE)
RETURNS DATE DETERMINISTIC
BEGIN
RETURN ADDDATE(LAST_DAY(SUBDATE(day, INTERVAL 1 MONTH)), 1);
END;;
DELIMITER ;
이 방법:
SELECT FIRST_DAY('2010-06-15');
반환:
2010-06-01
그 달의 첫날은 단순하기 때문에 실제로 간단한 해결책이 있다.today - (day_of_month_in_today - 1)
:
select now() - interval (day(now())-1) day
그것을 극단적으로 우회적이고 간접적인 다른 방법들과 대조하라.
또한 시간 구성요소에 관심이 없기 때문에 이 함수가 더 나은(그리고 더 빠른) 함수입니다.now()
또한 님의 2-Aity 과부하를 이용할 수 있습니다.그것은, 를 사용하는 것보다 퍼포먼스가 높기 때문입니다.interval
따라서 더 나은 해결책은 다음과 같습니다.
select subdate(curdate(), (day(curdate())-1))
오래된 것이지만 새로운 인간 웹 크롤러 XD에 도움이 될 수 있습니다.
이 달의 첫 번째 날에는 다음을 사용할 수 있습니다.
SELECT LAST_DAY(NOW() - INTERVAL 1 MONTH) + INTERVAL 1 DAY;
사용할 수 있습니다.EXTRACT
원하는 날짜 부품을 구하려면:
EXTRACT( YEAR_MONTH FROM DATE('2011-09-28') )
-- 201109
이 방법은 그룹화에 적합합니다.
DATE_FORMAT() 함수를 사용하여 날짜 필드의 첫 번째 날을 가져올 수 있습니다.
SELECT DATE_FORMAT(CURDATE(),'%Y-%m-01') as FIRST_DAY_CURRENT_MONTH
FROM dual;
Curdate()를 다음과 같은 다른 날짜 필드와 함께 변경합니다.
SELECT DATE_FORMAT(purchase_date,'%Y-%m-01') AS FIRST_DAY_SALES_MONTH
FROM Company.Sales;
그 후, 독자적인 질문을 사용해 주세요.
SELECT *
FROM
hrm_attendanceregister
WHERE
hrm_attendanceregister.Date) >=
DATE_FORMAT(CURDATE(),'%Y-%m-01')
CURDATE()는 지정된 다른 날짜로 변경할 수 있습니다.
아무도 이와 같은 것을 제안하지 않은 것이 놀랍습니다(이것이 얼마나 뛰어난지 모르겠습니다).
CONCAT_WS('-', YEAR(CURDATE()), MONTH(CURDATE()), '1')
필요에 따라 추가 날짜 작업을 수행하여 형식을 제거할 수 있습니다.
date_format 메서드를 사용하여 month & year만 체크합니다.
select * from table_name where date_format(date_column, "%Y-%m")="2010-06"
SELECT LAST_DAY(date) as last_date, DATE_FORMAT(date,'%Y-%m-01') AS fisrt_date FROM table_name
date=열 이름
달의 첫날을 계산하는 방법은 여러 가지가 있으며, 다음은 내 컴퓨터 성능입니다(사용자의 컴퓨터에서 이 작업을 시도할 수 있습니다).
그리고 승리자는.LAST_DAY(@D - interval 1 month) + interval 1 day
set @D=curdate();
select BENCHMARK(100000000, subdate(@D, (day(@D)-1))); -- 33 seconds
SELECT BENCHMARK(100000000, @D - INTERVAL (day(@D) - 1) DAY); -- 33 seconds
SELECT BENCHMARK(100000000, cast(DATE_FORMAT(@D, '%Y-%m-01') as date)); -- 29 seconds
SELECT BENCHMARK(100000000, LAST_DAY(@D - interval 1 month) + interval 1 day); -- 26 seconds
가 사용하는 솔루션last_day()
한 달과 하루는 서로 바꿀 수 없습니다.
예제:
date_sub(date_add(last_day(curdate()), interval 1 day), interval 3 month)
항상 지정된 기간 동안 돌아가기를 원하는 기간 동안 작동합니다.
date_add(date_sub(last_day(now()), interval 3 month), interval 1 day)
예를 들어 현재 달이 30일이고 다시 빼는 달(그리고 하루를 더하는 달)이 31일 경우 오류가 발생할 수 있습니다.
date_add(subdate(curdate(), interval day(?) day), interval 1 day)
?를 해당 날짜로 변경합니다.
저는 이거면 돼요.
date(SUBDATE("Added Time", INTERVAL (day("Added Time") -1) day))
** "Added Time"을 열명으로 바꿉니다.
사용 사례:
월 및 연도를 제외한 모든 날짜 필드를 재설정하는 경우.
열 형식을 "날짜"로 유지하려는 경우.('텍스트' 또는 '숫자'가 아님)
저속(17초):
SELECT BENCHMARK(100000000, current_date - INTERVAL (day(current_date) - 1) DAY);
SELECT BENCHMARK(100000000, cast(DATE_FORMAT(current_date, '%Y-%m-01') as date));
날짜 유형이 필요하지 않은 경우 이 방법이 더 빠릅니다.고속(6초):
SELECT BENCHMARK(100000000, DATE_FORMAT(CURDATE(), '%Y-%m-01'));
SELECT BENCHMARK(100000000, DATE_FORMAT(current_date, '%Y-%m-01'));
select big.* from
(select @date := '2010-06-15')var
straight_join
(select * from your_table where date_column >= concat(year(@date),'-',month(@date),'-01'))big;
이렇게 하면 전체 테이블 검색이 생성되지 않습니다.
언급URL : https://stackoverflow.com/questions/3298288/how-to-get-first-day-of-every-corresponding-month-in-mysql
'itsource' 카테고리의 다른 글
Github 페이지의 VueJS 앱 공백 페이지 (0) | 2022.09.17 |
---|---|
PHP가 숫자 문자열에서 쉼표 제거 (0) | 2022.09.17 |
Vue를 사용한 클릭 투 편집 텍스트 필드 (0) | 2022.09.17 |
matplotlib 그림에서 축 텍스트 숨기기 (0) | 2022.09.17 |
JavaScript를 사용하여 전체 경로에서 파일 이름을 가져오려면 어떻게 해야 합니까? (0) | 2022.09.17 |