Asked thg 9 25, 2020 3:22 CH 1790 0 3
  • 1790 0 3
0

Cách lấy ngày đầu tiên và cuối cùng của tháng này và tháng trước trong PHP

Share
  • 1790 0 3

Xin chào, Mình cần cách tự động lấy ngày đầu tiên và ngày cuối cùng của tháng này (và tháng trước). Mình sẽ dùng chúng làm biến để thực hiện truy vấn MySQL.

Đại khái truy vấn MySQL của mình như thế này.

SELECT content FROM posts WHERE date_created BETWEEN $ngaydauthangnay and $ngaycuoithangnay

Trong đó:

  • content: 1 column chứa nội dung
  • posts: tên của Table
  • date_created: 1 column có format là ngày tháng.

Bây giờ mình cần định nghĩa $ngaydauthangnay và $ngaycuoithangnay để nó tự động lấy ngày tháng của tháng hiện tại. Tương tự, mình cần làm như thế với tháng trước.

3 ANSWERS


Answered thg 9 26, 2020 2:42 CH
Accepted
+6

@dokkan7 bạn có thể dùng thư viện carbon như @minhhieuuet đề cập hoặc dùng php thuần luôn, nó support cả rồi

echo date('Y-m-01') ; // ngày đầu tháng
echo date("Y-m-t"); // ngày cuối tháng

$month_ini = new DateTime("first day of last month"); ngày đầu của tháng trước
echo $month_ini->format('Y-m-d');

$month_end = new DateTime("last day of last month"); ngày cuối của tháng trước 
echo $month_end->format('Y-m-d');

Hoặc bạn có thể dùng hàm trong sql để lấy cái đó luôn, đỡ phải dùng php. (cho nhanh và tiết kiệm bộ nhớ đc xíu 😄)

* LAST_DAY(curdate() - interval 1 month) + interval 1 day // ngày đầu tháng
* select last_day(curdate()) // ngày cuối tháng

* select last_day(curdate() - interval 2 month) + interval 1 day//  ngày đầu của tháng trước
* select last_day(curdate() - interval 1 month) // ngày cuối của tháng trước

Hy vọng no useful với bạn.

Share
Avatar morikun @thanhnguyen
thg 9 26, 2020 2:52 CH

xuất sắc!

0
| Reply
Share
Avatar Ngân Kim @ngankim
thg 9 26, 2020 2:55 CH

@dokkan7 mấy cái này dùng php là đủ, ko cần dùng carbon

0
| Reply
Share
Avatar Dr Dokkan @dokkan7
thg 9 27, 2020 5:15 SA

Cảm ơn mọi người.

0
| Reply
Share
Answered thg 9 25, 2020 4:35 CH
+2

Bạn có thể dùng extension Carbon để xử lý ngày tháng dễ dàng hơn https://carbon.nesbot.com/ muốn lấy ngày đầu tiên của tháng trước thì có thể dùng

$startDayPreviousMonth = Carbon::now()->modify('-1 months')-> startOfMonth()

$endDayPreviousMonthDay = Carbon::now()->modify('-1 months')-> endOfMonth()

Share
Avatar Dr Dokkan @dokkan7
thg 9 27, 2020 5:15 SA

Cảm ơn bạn.

0
| Reply
Share
thg 2 26, 2021 3:52 SA

$startDayPreviousMonth = Carbon::now()->modify('-1 months')-> startOfMonth(); cái này trả về obj, mình phải format nữa mới ra được Date.

0
| Reply
Share
thg 2 26, 2021 4:14 SA
Answered thg 2 26, 2021 4:14 SA
0

Dùng PHP luôn nếu chỉ yêu cầu thế không thì dùng Carbon sẽ tiện hơn khi cần tác động vào ngày tháng bằng các biến:

$firstDayLastMonth = date('Y-m-d 00:00:00', strtotime('first day of last month'));

$lastDayLastMonth = date('Y-m-d 23:59:00', strtotime('last day of last month'));

Share
Viblo
Let's register a Viblo Account to get more interesting posts.