Oracle Tips : Amazing Oracle Date Function Part#3
พบกันอีกเช่นเคย วันนี้เราจะมาจบเรื่อง Oracle Date Function กัน แต่วันนี้มี LAB นิดหน่อยครับ
จะต้องสร้างตารางสำหรับทดสอบขึ้นมา เพื่อให้เห็นภาพมากขึ้น ดังนี้
CREATE TABLE TEST_TIME ( dcol1 DATE, dcol2 DATE, dcol3 DATE); INSERT INTO TEST_TIME VALUES (SYSDATE+23, SYSDATE-10, SYSDATE-24); INSERT INTO TEST_TIME VALUES (SYSDATE-15, SYSDATE, SYSDATE+15); INSERT INTO TEST_TIME VALUES (SYSDATE-7, SYSDATE-18, SYSDATE-9); COMMIT; |
เมื่อสร้างตารางพร้อมข้อมูลแล้ว ลองมาดูข้อมูลในตารางกันก่อน
SQL> select * from TEST_TIME; DCOL1 DCOL2 DCOL3 ———————————– ————————————– ————————————— 10-AUG-2009 02:22:22 08-JUL-2009 02:22:22 24-JUN-2009 02:22:22 03-JUL-2009 02:22:22 18-JUL-2009 02:22:22 02-AUG-2009 02:22:22 11-JUL-2009 02:22:22 30-JUN-2009 02:22:22 09-JUL-2009 02:22:22 |
ในตารางตัวอย่างเป็นการเก็บข้อมูลวันเวลาทั้ง 3 ฟิลด์เลย คราวนี้เราจะมารู้จักกับฟังก์ชันกัน ดังนี้
7. GREATEST vs LEAST Function
ฟังก์ชันนี้สองตัวนี้ไว้ใช้สำหรับหาวันเวลาที่มากที่สุด หรือ น้อยที่สุดในแต่ละ record ครับ โดยจากตัวอย่างตาราง TEST_TIME ถ้าเราต้องการข้อมูลที่มีวันเวลามากที่สุดในแต่ละ record หรือน้อยที่สุดเราสามารถเรียกใช้ฟังก์ชันได้ดังนี้
GREATEST(<date1>, <date2>, <date3>,) |
LASTEST(<date1>, <date2>, <date3>,) |
SQL> select greatest(DCOL1,DCOL2,DCOL3) GREATEST, least(DCOL1,DCOL2,DCOL3) LEAST from TEST_TIME; GREATEST LEAST ————————- ——————– 10-AUG-2009 02:22:22 24-JUN-2009 02:22:22 02-AUG-2009 02:22:22 03-JUL-2009 02:22:22 11-JUL-2009 02:22:22 30-JUN-2009 02:22:22 |
จากตัวอย่างทำการ Query หาทั้งวันเวลามากที่สุด, น้อยที่สุดจากตาราง TEST_TIME ครั้งเดียวเลยสะดวกดีครับ
8. MAX vs MIN Function
สำหรับฟังก์ชันสองตัวนี้คงคุ้นตามากๆเลยใช่มั้ยครับ ซึ่งเราสามารถเอามาประยุกต์ใช้ร่วมกับวันเวลาได้เช่นกัน
ซึ่งจะได้ผลลัพธ์แตกต่างกับ GREATEST, LEAST ฟังก์ชัน ตรงที่จะหาวันเวลาที่มากที่สุดหรือน้อยที่สุดในแนวดิ่ง
และจะทำไดทีละฟิลด์เท่านั้น โดยมีรูปแบบและตัวอย่างดังนี้
MAX(<date>)MIN(<date>) |
SQL> select min(DCOL1),max(DCOL3) from TEST_TIME; MIN(DCOL1) MAX(DCOL3) ——————– ——————– 03-JUL-2009 02:22:22 02-AUG-2009 02:22:22 |
จากตัวอย่างเราจะได้ผลลัพธ์เพียงชุดเดียวในแนวดิ่ง ซึ่งให้ผลแตกต่างกับ GREATEST, LEAST ไว้ให้เราเลือกใช้ได้อย่างเหมาะสม
9. SPELLING DATE
สำหรับฟังก์ชันสุดท้ายที่จะขอยกตัวอย่างคือฟังก์ชันในการ Spelling date ซึ่งสามารถแปลงตัวเองออกมาเป็นตัวอักษร
ให้เราอ่านได้ด้วย เพียงแต่เป็นฟังก์ชันที่แฝงอยู่กับฟังก์ชัน TO_CHAR ในตอนแปลง DATE -> CHAR ซึ่งปกติเราจะระบุ
DD-MM-YYYY HH24:MI:SS
ในการ Spelling เราเพียงเพิ่มคำว่า “SP” ต่อท้ายเช่น
DD -> DDSP, MM -> MMSP, YYYY -> YYYYSP
HH24 -> HH24SP, MI -> MISP, SS -> SSSP
ดังแสดงในตัวอย่าง
SQL> select sysdate,to_char(sysdate,’DDSP-MON-YYYYSP HH24SP:MISP:SSSP’) SPELLING from dual; SYSDATE ——————– SPELLING ———————————————————— 18-JUL-2009 02:51:22 EIGHTEEN-JUL-TWO THOUSAND NINE TWO:FIFTY-ONE:TWENTY-TWO |
อ่ะ…ไม่น่าเชื่อเลยใช่มั้ยครับ เราสามารถใช้ Query Statment ธรรมดาก็สามารถแปลงวันเวลาออกมาในลักษณะข้อความได้ สำหรับเรื่อง Oracle Date Function ก็ขอจบเพียงเท่านี้ครับ แล้วพบกันใหม่ฉบับหน้า