ستون ها و انواع داده در اوراکل – انواع تاریخ و زمان

در مطلب های پیشین در مورد انواع کاراکتری و عددی صحبت کردیم. در این مطلب می خواهیم در مورد یکی دیگر از اصلی ترین نوع داده ها، یعنی داده های تاریخ و زمان (DateTime) صحبت کنیم. لفط نوع تاریخ و زمان کلی است و خود این دسته از داده ها را می توانیم به دو دسته داده های DateTime و Interval دسته بندی کنیم.

داده های DateTime از نظر اوراکل به انواع زیر دسته بندی می شوند. بنابراین از انواع زیر می توانیم به نوع DateTime اشاره کنیم.

  • DATE
  • TIMESTAMP
  • TIMESTAMP WITH TIME ZONE
  • TIMESTAMP WITH LOCAL TIME ZONE

در عوض داده های Interval از نظر اوراکل به انواع زیر دسته بندی می شوند. بنابراین از انواع زیر می توانیم به نوع Interval اشاره کنیم.

  • INTERVAL YEAR TO MONTH
  • INTERVAL DAY TO SECOND

اما هر دو این دسته از انواع تاریخ زمان شامل یک سری فیلدهای مشترک هستند که سال، ماه، روز، ساعت، دقیقه و ثانیه را مشخص می کنند که در ادامه فهرست شده اند.

  • YEAR
  • MONTH
  • DAY
  • HOUR
  • MINUTE
  • SECOND

اما نوع TIMESTAMP WITH TIME ZONE که در دسته DateTime قرار دارد می تواند شامل فیلدهای زیر نیز باشد.

  • TIMEZONE_HOUR
  • TIMEZONE_MINUTE
  • TIMEZONE_REGION
  • TIMEZONE_ABBR

نوع داده DATE

این نوع در دسته DateTime قرار می گیرد و می تواند فرمت تاریخ مثلا 13-10-2018 را یا به صورت کاراکتری یا به صورت عددی در خود نگه دارد. منظور از کاراکتری، یعنی تاریخ میان دو Single Quotation قرار می گیرد.

توجه کنید در دستور بالا فرمت تاریخ تنها شامل فیلدهای سال-ماه-روز بود اما مطابق فرمت زیر نه تنها می تواند شامل این سه فیلد باشد، بلکه می توانیم ساعت:دقیقه:ثانیه را نیز در آن بیاوریم.

نوع داده Timestamp

این نوع نیز جز دسته DateTime قرار می گیرد و به نوع داده مهر زمانی معروف است. می تواند فرمت آن دقیقا مشابه نوع DATE است، یعنی می تواند شامل سال-ماه-روز ساعت:دقیقه:ثانیه باشد. فرمت آن می تواند شبیه زیر باشد.

در واقع نوع TIMESTAMP توسعه داده نوع DATE است زیر می تواند شامل Franction Second باشد که در فرمت بالا با FF مشخص شده است در صورتی که نوع DATE نمی تواند این بخش را در خود ذخیره کند.

فرمت نوع DateTime

گفتیم که در تمامی انواع تاریخ و زمان شش فیلد سال، ماه، روز، ساعت، دقیقه، ثانیه وجود دارند ولی چه فرمت هایی مورد قبول اوراکل هستند؟ کدام کاراکترها می توانند برای جدا سازی هر یک از فیلدها استفاده شوند؟ کدام نمادها مشخص کننده هر یک از این شش فیلد هستند؟

هر یک از کاراکترهای زیر می توانند برای جدا سازی شش فیلد مورد استفاده قرار گیرند. در بالا می بینید که از YYYY برای نشان دادن سال به چهار رقم (1983)، MM برای نمایش ماه به صورت دو رقمی (ماه 10)، DD برای نمایش روز از ماه به صورت دو رقمی (روز ۱۳)، از HH برای نمایش ساعت، MI برای نمایش دقیقه و از SS برای نمایش ثانیه استفاده شده است.

مثال زیر فرمت هایی را نشان می دهد.

نماد های Y و YY و YYY هر سه سال را نمایش می دهند با این تفاوت که به ترتیب تک رقم، دو رقم و سه رقم آخر سال را نشان می دهند. قطعا دیده اید که مثلا در پیش از سال ۲۰۰۰، سال 1999 را به صورت 99 نشان می دادند چون از نماد YY استفاده می شد. YEAR نماد دیگری است که برای نمایش سال استفاده می شود.

نمادهای MM سال را با شروع از ژانویه به صورت 01 الی آخر نشان می دهد. MON و MONTH دو نماد دیگر هستند که به ترتیب کوتاه شده ماه و نام کامل ماه را نشان می دهند. DD نیز عدد روز در ماه را نشان می دهد ولی می توانید از DY و DAY برای نمایش کوتاه شده نام روز و نام کامل روز استفاده کنید.

نماد های HH و HH12 هر دو یک معنی دارند و برای نمایش ساعت به صورت ۱ تا ۱۲ قابل استفاده هستند. ما برای نمایش ساعت پیش از ظهر را همراه با A.M و ساعت پس از ۱۲ ظهر تا ۱۲ شب را با P.M نشان می دهیم. HH24 نماد دیگری است که ساعت را به صورت عدد ۱ تا ۲۴ نشان می دهد. نماد MI  برای نمایش دقیقه و نماد SS برای نمایش ثانیه استفاده می شوند.