반응형
MySQL: 이번 주 기록을 어떻게 선택합니까?
자리가 있습니다temp
squlifidle에 구조체 포함:
id(int 11 primary key)
name(varchar 100)
name2(varchar 100)
date(datetime)
저는 이번 주에 기록을 받고 싶습니다. 예를 들어 지금 21.11.2013이라면 (주중) 18.11.2013에서 24.11.2013까지 모든 행을 원합니다.
이제 다음 알고리즘이 보입니다.
- 평일을 보다.
- 월요일이 며칠 전인지 계산합니다.
- 월요일 날짜를 계산합니다.
- 일요일에 미래 날짜를 계산합니다.
- 날짜를 정해서 요청합니다.
제발 말해주세요, 더 짧은 알고리즘이 존재하나요? (가능하면 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
반응형
'programing' 카테고리의 다른 글
Windows 응용 프로그램에서 보이는 디스플레이로 stdout을 리디렉션하려면 어떻게 해야 합니까? (0) | 2023.08.26 |
---|---|
텍스트 보기에서 글꼴을 변경하는 방법은 무엇입니까? (0) | 2023.08.26 |
아무것도 찾을 수 없을 때 예외를 던지지 않는 파이썬용 list.index() 함수 (0) | 2023.08.26 |
CSS 이미지 크기, 채우는 방법, 늘어나지 않는 방법? (0) | 2023.08.26 |
Nib에서 재사용 가능한 UITableViewCell 로드 (0) | 2023.08.26 |