Function เวลาใน SQL ที่ได้ใช้บ่อยๆ by

31
Jan
0

การทำงานกับตัวแปรเวลานี่ค่อนข้างยุ่งยากมากใน 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!

ไม่มีความเห็น

ยังไม่มีความเห็น

ใส่ความเห็น

RSS feed for comments on this post