programing

지난달의 첫날과 마지막 날을 얻는 가장 좋은 방법은?

shortcode 2022. 10. 6. 22:08
반응형

지난달의 첫날과 마지막 날을 얻는 가장 좋은 방법은?

지난달의 첫날과 마지막 날을 얻을 수 있는 가장 좋은 방법을 찾고 있어요.지난달 통계를 얻기 위한 SQL 쿼리 작성에 사용합니다.

이것이 최선의 방법이라고 생각합니다만, 보다 최적화되어 있지만, 보다 포괄적이지는 않습니다.누구라도 같은 일을 할 수 있는 다른 방법이 있습니까?

    $month_ini = date("Y-m-d", mktime(0, 0, 0, date("m", strtotime("-1 month")), 1, date("Y", strtotime("-1 month"))));

    $month_end = date("Y-m-d", mktime(0, 0, 0, date("m", strtotime("-1 month")), date("t", strtotime("-1 month")), date("Y", strtotime("-1 month"))));

감사합니다!!

PHP 5.3에서는,DateTime클래스:

<?php

$month_ini = new DateTime("first day of last month");
$month_end = new DateTime("last day of last month");

echo $month_ini->format('Y-m-d'); // 2012-02-01
echo $month_end->format('Y-m-d'); // 2012-02-29

전달 마지막 날:

date("Y-m-d", mktime(0, 0, 0, date("m"), 0));

전달 첫째 날:

date("Y-m-d", mktime(0, 0, 0, date("m")-1, 1));

MySQL 및 PHP 스크립트에서 사용하는 짧고 간단한 것은 다음과 같습니다.

echo date('Y-m-d', strtotime('first day of last month'));
echo date('Y-m-d', strtotime('last day of last month'));

MySQL 사용 예:

$query = $db->query("SELECT * FROM mytable WHERE 1 AND mydate >= '".date('Y-m-d', strtotime('first day of last month'))."'");

MySQL 쿼리를 위해 이 작업을 수행하는 경우 MONTH 함수 사용을 고려해 본 적이 있습니까?

SELECT [whatever stats you're after] FROM table
WHERE MONTH(date_field) = 12 and YEAR(date_field) = 2011

이게 12월 통계입니다.성능 문제가 발생하기 시작하고 기록 데이터가 변경되지 않는 경우 데이터를 집계 테이블로 정규화할 수 있습니다(예: 매일/시간/월 등 필요한 최소한의 증분값으로 롤업).

MySQL에서 다음을 수행할 수 있습니다.

WHERE `DateAndTime` >= '2012-02-01 00:00:00'
AND `DateAndTime` < '2012-03-01 00:00:00'

mysql이 날짜를 처리하도록 해

데이터베이스가 할 수 있는 일이라면, 그대로 해 주세요.

다음과 같습니다.

mysql_query("set @last_day=last_day(now()-interval 1 month),@first_day=(@last_day-interval 1 month)+interval 1 day");
$result=mysql_query("select * from `table` where (`date` between @first_day and @last_day)");

가장 좋은 점은 해가 바뀌어도 효과가 있다는 것입니다.

데이터베이스 시간대를 php와 일치하도록 변경하는 것만 기억하십시오.

언급URL : https://stackoverflow.com/questions/9735604/the-best-way-to-get-the-first-and-last-day-of-last-month

반응형