|
|
|
รบกวนช่วยแนะนำ แนวทาง ในเรื่องการ คำนวณวันหมดอายุ เช่าพื้นที่ หน่อยครับ |
|
|
|
|
|
|
|
Code (PHP)
//วันที่รูปแบบ คศ นะครับ
if(date('Y-m-d'))==$result[A]){
echo"เหลือ 1 เดือนหมดอายุ";
}
|
ประวัติการแก้ไข 2014-02-07 19:31:05
|
|
|
|
Date :
2014-02-07 19:28:52 |
By :
narubet |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(สมมุติ 01-03-2013)==สมมุติ 01-02-2013){
echo"เหลือ 1 เดือนหมดอายุ";
}
คือผมไม่รู้จะคิดยังไงอะครับ หรือว่าเขียน เงือนไขใน mysql ดีครับ ถ้าเป็นแบบที่พี่บอกมันไม่ได้อะครับ
คือผมต้องการแสดง วันที่หมดอายุการเช่า ก่อน 1 เดือนมาแสดง จากนั้นก็ กดปุ่มแจ้งเตือนไปที่ลูกค้าว่า กำลังจะหมดแล้วนะ แบบนี้อะครับ รบกวนแนะนำทีครับ
|
|
|
|
|
Date :
2014-02-07 19:46:50 |
By :
copyringht |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันที่จริงใช้บน MySQL ใช้พวก DATE_ADD / DATE_DIFF ง่ายมาก
|
|
|
|
|
Date :
2014-02-08 07:12:54 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ พี่ๆทุกท่าน
ช่วยอธิบายเพิ่มเติมได้ไหมครับ
SELECT * FROM tablename WHERE TIMESTAMPDIFF(MONTH, date, ADDDATE(CURDATE(), 1)) <= 0
|
ประวัติการแก้ไข 2014-02-08 13:16:41
|
|
|
|
Date :
2014-02-08 13:13:11 |
By :
copyringht |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code
SELECT * FROM tablename WHERE TIMESTAMPDIFF(MONTH, date, ADDDATE(CURDATE(), 1)) <= 0
จากตัวอย่างดังกล่าวจะอธิบายดังนี้ครับ
ก็ SELECT รายการแล้วกำหนดเงื่อนไขที่ WHERE เช่น TIMESTAMPDIFF(MONTH, 2014-03-16, CURDATE())
- CURDATE() จะคืนค่าวันที่ปัจจุบันในรูปแบบ เช่น สมมติ CURDATE() ของวันนี้คือ 2014-02-9
ก็จะได้ TIMESTAMPDIFF(MONTH, '2014-03-16', '2014-02-9')
- date หมายถึงชื่อฟิลวันที่ในตารางของเราคับ ใส่ตามของคุณเลยคับ
- MONTH คือ Unit ที่เราต้องการหาความต่าง เช่น DAY MONTH YEAR ในที่นี่เราต้องการความต่างของเดือน ก็คือ MONTH
- TIMESTAMPDIFF(MONTH, '2014-03-16', '2014-02-9') ตามเงื่อนไขดังกล่าวจะคืนค่า 1 ออกมา
- TIMESTAMPDIFF(MONTH, '2014-03-16', '2014-02-16') ตามเงื่อนไขดังกล่าวจะคืนค่า 1 ออกมา
- TIMESTAMPDIFF(MONTH, '2014-03-16', '2014-02-17') ตามเงื่อนไขดังกล่าวจะคืนค่า 0 ออกมา
พอมองเห็นภาพมั๊ยครับ
ส่วน ADDDATE(CURDATE(), 1) เป็นการเพิ่มวันให้ไวไปอีก 1 วันคับ เหตุก็เพราะว่า ดูเงื่อนไขด้านล่างคับ
- TIMESTAMPDIFF(MONTH, '2014-03-16', '2014-02-16') ตามเงื่อนไขดังกล่าวจะคืนค่า 1 ออกมา
เพราะผมต้องการให้มันคืนค่า 0 ออกมาก เมื่อถึงวันที่ 16 ของเดือนกุมภาพันธ์ ซึ่งจะได้ตรงกับวันหมดอายุ วันที่ 16 มีนาคม
ผมจึงหลอกมัน เลยบวกวันเพิ่มไปอีก 1 วัน ซึ่งพอถึงวัน 2014-02-16 มันก็จะมองเป็น 2014-02-17 ก็จะคืนค่า 0 ออกมานั่นเองคับ
ดังนั้น หากคืนค่า 0 นี่หมายถึง วันที่อยู่ในระหว่าง 1 เดือน ก่อนครบกำหนด
เราก็มากำหนดเงื่อนไข SELECT * FROM tablename WHERE TIMESTAMPDIFF(MONTH, date, ADDDATE(CURDATE(), 1)) <= 0
ให้ Select เฉพาะรายการที่มีวันที่ที่เรากำหนดเงื่อนไขไว้แล้วคืนค่าที่ น้อยกว่าหรือเท่ากับ 0.
ดังนั้น รายการไหนที่อยู่ในภายในหรือระหว่างก่อนครบกำหนด 1 เดือน หรือตรงกับเงื่อนไข ก็จะถูก Select ออกมา
หรือมีอีกวิธีคือใช้ DATE_DIFF(date, CURDATE()) <= 30 แบบนี้ก็จะฟิกตรงตัวเลยว่า หากอยู่ภ่ายในหรือระหว่าง 30 วันก็จะตรงเงื่อนไข
หวังว่าคงจะเข้าใจนะคับ ร่ายมาซะยาวเลยย
|
|
|
|
|
Date :
2014-02-08 20:47:02 |
By :
tomrambo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|