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 ก็ขอจบเพียงเท่านี้ครับ แล้วพบกันใหม่ฉบับหน้า

You may also like...

Leave a Reply

Your email address will not be published.