programing

MySQL: 이번 주 기록을 어떻게 선택합니까?

cafebook 2023. 8. 26. 12:17
반응형

MySQL: 이번 주 기록을 어떻게 선택합니까?

자리가 있습니다tempsqulifidle에 구조체 포함:

id(int 11 primary key)
name(varchar 100)
name2(varchar 100)
date(datetime)

저는 이번 주에 기록을 받고 싶습니다. 예를 들어 지금 21.11.2013이라면 (주중) 18.11.2013에서 24.11.2013까지 모든 행을 원합니다.

이제 다음 알고리즘이 보입니다.

  1. 평일을 보다.
  2. 월요일이 며칠 전인지 계산합니다.
  3. 월요일 날짜를 계산합니다.
  4. 일요일에 미래 날짜를 계산합니다.
  5. 날짜를 정해서 요청합니다.

제발 말해주세요, 더 짧은 알고리즘이 존재하나요? (가능하면 MySQL 쿼리에서)

ADD 질문: 쿼리가 날짜에 기록을 선택하는 이유17.11.2013(Sunday) - 23.11.2013(Saturday)그리고 어떻게 날짜에 레코드를 얻음18.11.2013(Monday) - 24.11.2013(Sunday)?

쿼리:

select * from temp
where yearweek(`date`) = yearweek(curdate())

감사합니다!

사용:

SELECT *
FROM   your_table
WHERE  YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1)

사용하다YEARWEEK사용하는 경우WEEKOFYEAR당신은 또한 이전 해의 기록들을 얻을 것입니다.

SELECT id, name, date
FROM table
WHERE YEARWEEK(date)=YEARWEEK(NOW());

일, 주 및 월의 레코드를 선택하려면 다음 방법을 사용합니다.

function my_func($time, $your_date) {
if ($time == 'today') {
    $timeSQL = ' Date($your_date)= CURDATE()';
}
if ($time == 'week') {
    $timeSQL = ' YEARWEEK($your_date)= YEARWEEK(CURDATE())';
}
if ($time == 'month') {
    $timeSQL = ' Year($your_date)=Year(CURDATE()) AND Month(`your_date`)= Month(CURDATE())';
}

$Sql = "SELECT * FROM  your_table WHERE ".$timeSQL
return $Result = $this->db->query($Sql)->result_array();
}

다음과 같은 방법으로 할 수 있습니다.

SELECT DATE_FORMAT("2017-06-15", "%U");

주 수 가져오기(00 ~ 53) 위치(일요일 첫째 날 및 월요일 마지막 날)

당신에게 유용할 수도 있습니다.

예:

SELECT DISTINCT DATE_FORMAT('dates', '%U') AS weekdays FROM table_name;

간단한 해결책은 다음과 같습니다.

SELECT * FROM my_table WHERE DATE_FORMAT("2021-08-19 15:40:33", "%U") = WEEK(CURDATE());

언급URL : https://stackoverflow.com/questions/20120693/mysql-how-to-select-records-for-this-week

반응형