คลังเก็บบล็อก

คุมการแสดงผลตามเวลา


ตัวอย่าง query กำหนดเวลาแสดงผลของ mysql ให้แสดง ไม่แสดงตามเวลาที่กำหนด โดยยูเซอร์เลือกที่จะใส่ไม่ใส่ time, expire, start, end ก็ได้ เช่น จะแสดงหลังวันที่ xxx ไปตลอดกาลก็ใส่แต่วันที่เริ่มต้น จะแสดงจนถึงวันที่เท่าไหร่ก็ใส่เฉพาะวันที่สิ้นสุด จะแสดงในช่วงเวลาก็ใส่ทั้งคู่ กลับกัน ไม่ใส่ทั้งคู่ก็เหมือนไม่กำหนดเงือนไขอะไรเลย

SELECT *,
       CASE
         WHEN datePublish != '0000-00-00'
              AND dateExpire != '0000-00-00' THEN
         IF(datePublish <= Curdate()
            AND dateExpire >= Curdate(), true, false)
         WHEN datePublish != '0000-00-00' THEN
         IF(datePublish <= Curdate(), true, false
         )
         WHEN dateExpire != '0000-00-00' THEN
         IF(dateExpire >= Curdate(), true, false)
         ELSE true
       end AS published
FROM   pp_contents
HAVING published = true
Advertisements

คำนวนวันที่ใน PHP


วันนี้เข้าไปแก้งานบนระบบเก่าๆ เลยขอเขียนเตือนความจำเป็นอนุสรณ์ไว้ซะหน่อย
ปัจจุบัน ถ้าต้องการหาวันที่ย้อนหลังจะเขียนตามตัวอย่าง

$date = new DateTime('2012-07-09');
$date->sub(new DateInterval('P3D'));
echo $date->format('Y-m-j');

ซึ่งถ้าใช้กับ php ตัวที่เก่ากว่า 5.3 ลงมาจะมี error
Fatal error: Call to undefined method DateTime::sub() in
แก้ได้โดยไปเขียนแบบเก่าๆ คือ

$date = strtotime('-3 day' ,strtotime('2012-07-09')) ;
echo  date('Y-m-j' ,$date);

ดูเพิ่มเติม

%d bloggers like this: