Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sự kiện lặp lại vào ngày trong tuần thứ n của mỗi tháng

Đây là một giải pháp thay thế khả thi cho bạn. strtotime mạnh mẽ và cú pháp bao gồm các bit thực sự hữu ích như từ ngữ ngày giờ tương đối toàn diện .

Bạn có thể sử dụng nó để tạo các ngày trong tuần cụ thể đầu tiên đến thứ N của một tháng cụ thể bằng cách sử dụng định dạng "of". Đây là một ví dụ sử dụng date_create để gọi một DateTime đối tượng, nhưng strtotime cũ thông thường hoạt động theo cách tương tự:

php > $d = date_create('Last Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 25 2011 00:00:00
php > $d = date_create('First Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 04 2011 00:00:00
php > $d = date_create('First Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 06 2011 00:00:00
php > $d = date_create('Fourth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00
php > $d = date_create('Last Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00

Nó cũng sẽ tràn vào tháng, nếu bạn yêu cầu không hợp lệ:

php > $d = date_create('Ninth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday May 01 2011 00:00:00

Lưu ý rằng nó chỉ hoạt động với số thứ tự cách diễn đạt. Rất tiếc, bạn không thể vượt qua "1" hoặc "3".

Khi bạn sử dụng quyền này để lấy ngày thứ N thích hợp, sau đó bạn có thể chỉ cần thêm số ngày trong tuần cần thiết để bỏ qua (7 cho một tuần, 14 cho hai, 21 cho ba, v.v.) theo yêu cầu cho đến ngày kết thúc được chỉ định hoặc số lượng được chỉ định nhiều tuần đã trôi qua. Một lần nữa, strtotime để giải cứu, sử dụng đối số thứ hai để xâu chuỗi tính tương đối với nhau:

php > echo date('l F d Y H:i:s', strtotime('+14 days', strtotime('First Thursday of March 2011')));
Thursday March 17 2011 00:00:00

(Bản sao cục bộ của tôi cũng được chấp nhận '+14 days First Thursday of March 2011' , nhưng điều đó cảm thấy hơi kỳ lạ.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng tra cứu quan trọng như thế nào?

  2. Cách kích hoạt toán tử nối ống trong MySQL

  3. Bắt ngoại lệ chèn khóa trùng lặp

  4. MYSQL ERROR 2049 (HY000):Kết nối sử dụng tham chiếu giao thức xác thực cũ (trước 4.1.1) đã được sử dụng (tùy chọn máy khách 'secure_auth' được bật)

  5. Hàm MySQL password () sang PHP