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 ...

Avatar Dr Dokkan Theo dõi Yêu cầu thg 9 25, 2020 3:22 CH Yêu cầu thg 9 25, 2020 3:22 CH 1721 0 3
  • 1721 0 3
0

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.

Đăng câu trả lời Avatar Dr Dokkan @dokkan7 Theo dõi 34 2 12 4 Bookmark câu hỏi này Thêm một bình luận

3 CÂU TRẢ LỜI

Avatar iamfresher Theo dõi Đã trả lời thg 9 26, 2020 2:42 CH Đã 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ẻ Chia sẻ liên kết đến câu trả lời này Đóng Avatar iamfresher @benkyou Theo dõi 1.2K 33 13 30

xuất sắc!

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

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

Thêm một bình luận Avatar Minh Hiếu Theo dõi Đã trả lời thg 9 25, 2020 4:35 CH Đã 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ẻ Chia sẻ liên kết đến câu trả lời này Đóng Avatar Minh Hiếu @minhhieuuet Theo dõi 232 7 0 2

Cảm ơn bạn.

$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.

Bình luận này đã bị xóa Thêm một bình luận Avatar Truong Anh Theo dõi Đã trả lời 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ẻ Chia sẻ liên kết đến câu trả lời này Đóng Avatar Truong Anh @tab99 Theo dõi 4 0 4 2 Thêm một bình luận 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 nhập Đăng kí

Từ khóa » Hàm Lấy Ngày đầu Tiên Của Tháng Trong Sql