Yêu cầu thg 9 25, 2020 3:22 CH 1541 0 3
  • 1541 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

Chia sẻ
  • 1541 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 CÂU TRẢ LỜI


Đã trả lời thg 9 26, 2020 2:42 CH
Đã được chấp nhận
+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.

Chia sẻ
Avatar morikun @thanhnguyen
thg 9 26, 2020 2:52 CH

xuất sắc!

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

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

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

Đã trả lời 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()

Chia sẻ
Avatar Dr Dokkan @dokkan7
thg 9 27, 2020 5:15 SA

Cảm ơn bạn.

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.

thg 2 26, 2021 4:14 SA
Đã trả lời 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'));

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí