5/7/59

Oracle คำสั่ง TRUNC เบื้องต้น

Oracle คำสั่ง TRUNC เบื้องต้น


บทความนี้เรามาดูคำสั่งใน Oracle กันอีกซักหน่อย ซึ่งคำสั่งนั้นคือ TRUNC ครับ ในคำสั่ง TRUNC นั้นสามารถใช้ได้ทั้งตัวเลขและก็เวลาเลยครับ

นั่นก็แปลว่ามันจะมีทั้งคำสั่ง TRUNC(date) และก็ TRUNC(number) มาดู Syntax กันก่อนดีกว่าครับ

TRUNC(number)

Syntax ของ TRUNC(number) แสดงได้ดังด้านล่าง

TRUNC(n1 [, n2 ])

TRUNC(number) เมื่อเรียกใช้จะรีเทิร์นค่าเป็นตัวเลขที่ถูกตัดออก ตัวตำแหน่งของตัวที่ถูกตัดออกจะถูกกำหนดด้วย n2 แต่ถ้าไม่ได้กำหนด n2 มาให้ n2 จะถูกแทนที่ด้วยเลข 0

ในฟังก์ชัน TRUNC(number) นี้เราสามารถกำหนดได้ทั้งจำนวนลบ บวก หรือ 0 ก็ได้ทั้งนั้น เรามาดูตัวอย่างการใช้งานกัน

ตัวอย่างคำสั่ง TRUNC(number) แบบง่าย ๆ

select trunc(19.32, 0) from dual;
ผลลัพธ์ที่ได้ก็คือ 19 เพราะตัดตำแหน่งที่ 0

select trunc(19.32, 1) from dual;
ผลลัพธ์ที่ได้คือ 19.3 เพราะตัดตำแหน่งที่ 1

select trunc(19.32, -1) from dual;
ผลลัพธ์ที่ได้คือ 10 เพราะตัดตำแหน่งที่ -1 นั่นคือย้อนกลับไปหนึ่งตำแหน่งก็คือ 10 เลข 9 ตัดทิ้ง

TRUNC(date)

Syntax ของ TRUNC(date) แสดงได้ดังด้านล่าง

TRUNC(date [, fmt ])

TRUNC(date) เมื่อเรียกใช้ฟังก์ชันนี้แล้วจะรีเทิร์นค่าเป็น Date ซึ่ง Date ที่ได้จะเป็นเวลาที่ถูกตัดโดยกำหนดไว้ใน fmt ข้อมูลที่ได้จะเป็นข้อมูล Date เสมอแม้ว่าจะกำหนดตัวแปรเป็น DateTime ก็ตามแต่

สำหรับ fmt ที่ใส่ได้นั้นแสดงได้ตามด้านล่าง

Unit Valid format parameters
Year SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y
ISO Year IYYY, IY, I
Quarter Q
Month MONTH, MON, MM, RM
Week WW
IW IW
W W
Day DDD, DD, J
Start day of the week DAY, DY, D
Hour HH, HH12, HH24
Minute MI

เมื่อได้ format แล้วเรามาลองเรียกใช้งานกันดูครับ ตัวอย่างง่าย ๆ สำหรับการใช้งานฟังก์ชัน TRUNC ใน Oracle แสดงได้ดังนี้

select trunc(to_date('04-07-2016', 'DD-MM-YYYY'), 'YEAR') from dual;
เมื่อรันคำสั่งนี้จะได้ผลลัพธ์เป็น 01-JAN-16 ซึ่งเราใช้ฟอร์แมท YEAR เป็นฟอร์แมทของปีดังนั้นมันจะตัดทิ้งแล้วไปต้นปีนั่นก็คือวันที่ 1 มกราของปีนั้น ๆ คือ 1 JAN 2016

select trunc(to_date('04-07-2016', 'DD-MM-YYYY'), 'MONTH') from dual;
ตัวอย่างนี้เมื่อรันแล้วจะได้ผลลัพธ์เป็น 01-JUL-16 ซึ่งก็ได้ว่าฟอร์แมทที่เราใช้นั้นเป็น MONTH ซึ่งเป็นเดือน ดังนั้นมันจะกระโดดไปต้นเดือนแล้วตัดส่วนอื่นทิ้งนั่นก็คือต้นเดือนวันที่ 1 JUL 2016

สำหรับฟอร์แมทอื่น ๆ หรือตัวเลขอื่น ๆ ของไปเล่นกันดูครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น