Function เวลาใน SQL ที่ได้ใช้บ่อยๆ by rainbow
Jan0
การทำงานกับตัวแปรเวลานี่ค่อนข้างยุ่งยากมากใน PHP เพราะเราต้องแปรจากข้อความออกมาเป็น timestamp เพื่อไปใช้ในการคำนวณต่อไป แต่ใน SQL ที่เป็น query สั้นๆ จะมาเปลี่ยนตัวแปรไปมา ยิ่งจะสร้างความลำบากเข้าไปอีก แต่โชคดีที่ SQL มีคำสั่งเพื่อให้จัดการกับตัวแปรเวลาให้อยู่แล้ว
NOW() และ SYSDATE()
คำสั่ง NOW() จะคืนค่าเวลาที่ Query เริ่มทำงาน แต่ SYSDATE() จะคืนค่าเวลาในขณะนั้น
โดยจะคืนมาในรูปแบบดังนี้
String[NOW()] -> ‘YYYY-MM-DD HH:MM:SS’
Numberic[NOW()+0] -> YYYYMMDDHHMMSS.uuuuuu
โดยปกติจะคืนค่ามาในรูป String แต่ถ้ามีการทำการบวกลบจะคือค่าในรูป Numberic แทน
การใช้คำสั่ง DATE_ADD, DATE_SUB
DATE_ADD(date,INTERVAL expr unit)
DATE_SUB( date, INTERVAL expr unit )
date คือ วันเวลา
INTERVAL expr unit คือ จำนวนที่จะให้ทำการเพิ่มหรือลดเวลา (มีอธิบายอยู่ท้ายบล็อค)
ตัวอย่าง
1 วัน หลังวันที่ 2010-12-31 = DATE_ADD( ’2010-12-31′, INTERVAL 1 DAY )
3 นาทีที่แล้ว = DATE_SUB( NOW(), INTERVAL 3 MINUTE )
ในรูปแบบสมการ
ตัวแปรเวลาและ INTERVAL expr unit จะสามารถนำมาใช้ในรูปสมการได้
ตัวอย่าง
1 วัน หลังวันที่ 2010-12-31 = ’2010-12-31′ + INTERVAL 1 DAY
3 นาทีที่แล้ว = NOW() – INTERVAL 3 MINUTE
INTERVAL expr unit
คือรูปแบบที่แทนค่าเวลา ซึ่งจะขึ้นด้วย INTERVAL, รูปแบบของข้อมูล (expr), และหน่วย (unit)
ตัวอย่าง
- เวลา 1 วินาที = INTERVAL 1 SECOND
- เวลา 1 นาที 1 วินาที = INTERVAL 1:1 MINUTE_SECOND
- เวลา 1 วัน 1 ชั่วโมง = INTERVAL 1 1 DAY_HOUR หรือ INTERVAL 1 1:0:0 DAY_SECOND
ตัวแปร unit | รูปแบบตัวแปร expr |
---|---|
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOURS |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTERS |
YEAR | YEARS |
SECOND_MICROSECOND | ‘SECONDS.MICROSECONDS’ |
MINUTE_MICROSECOND | ‘MINUTES:SECONDS.MICROSECONDS’ |
MINUTE_SECOND | ‘MINUTES:SECONDS’ |
HOUR_MICROSECOND | ‘HOURS:MINUTES:SECONDS.MICROSECONDS’ |
HOUR_SECOND | ‘HOURS:MINUTES:SECONDS’ |
HOUR_MINUTE | ‘HOURS:MINUTES’ |
DAY_MICROSECOND | ‘DAYS HOURS:MINUTES:SECONDS.MICROSECONDS’ |
DAY_SECOND | ‘DAYS HOURS:MINUTES:SECONDS’ |
DAY_MINUTE | ‘DAYS HOURS:MINUTES’ |
DAY_HOUR | ‘DAYS HOURS’ |
YEAR_MONTH | ‘YEARS-MONTHS’ |
Enjoy this article?
Consider subscribing to our RSS feed!
ไม่มีความเห็น
ยังไม่มีความเห็น