Postingan kali ini saya mencoba menjelaskan banyak hal tentang tanggal di oracle seperti fungsi tanggal oracle sql, format tanggal oracle sql, perbandingan tanggal oracle sql, perbedaan tanggal oracle dalam tahun, perbedaan tanggal oracle dalam hari, perbedaan tanggal oracle dalam bulan
Oracle telah menyediakan tipe tanggal dan waktu untuk menyimpan informasi tanggal dan waktu dalam database oracle.
Jenis Data Tanggal
DATE adalah tipe data oracle yang kita semua kenal ketika kita berpikir tentang merepresentasikan nilai tanggal dan waktu. Ini memiliki kemampuan untuk menyimpan bulan, hari,
tahun, abad, jam, menit, dan detik. Masalah dengan tipe data DATE adalah 'perinciannya saat mencoba menentukan interval waktu antara dua peristiwa ketika peristiwa terjadi dalam satu detik satu sama lain. Masalah ini diselesaikan dengan tipe data TIMESTAMP
Stempel waktu
Oracle telah memperluas tipe data DATE dan telah memberi kita tipe data TIMESTAMP yang menyimpan semua informasi yang disimpan oleh tipe data DATE, tetapi juga mencakup pecahan detik. Jika Anda ingin mengonversi tipe data DATE ke format tipe data TIMESTAMP, Anda dapat menggunakan fungsi CAST
SQL> SELECT CAST(last_login_date AS TIMESTAMP) "Tanggal" DARI pengguna;Tanggal-------------------- ----------------------20-APR-16 01.55.14.000000 PM21-JUN-16 14.16.36.000000 AM21-JUL-16 10.16.36.000000 AM21-SEP- 16 11.16.36.000000 AM21-DEC-16 11.16.36.000000 AM
Untuk mendapatkan tanggal dan waktu sistem yang dikembalikan dalam tipe data TIMESTAMP, Anda dapat menggunakan fungsi SYSTIMESTAMP seperti:
SQL> PILIH SYSTIMESTAMP DARI DUAL;SYSTIMESTAMP--------------------------------------- ------------------------------------ 01-SEP-19 01.02.17.158913 PM -04:00Beberapa poin Penting
1) Tipe DATE dan TIMESTAMP selalu berisi komponen tanggal dan waktu. Tepat tengah malam waktu adalah 00:00:00.
SELECT TO_CHAR(SYSDATE, 'MM/DD/YYYY HH:MI:SS AM') date_with_time,TRUNC(SYSDATE) today,TO_CHAR(TRUNC(SYSDATE), 'MM/DD/YYYY HH:MI:SS AM' ) date_with_time_midnightFROM dual 2 3 4;DATE_WITH_TIME HARI INI TANGGAL_WITH_TIME_MIDNIGHT---------------------- --------- --------- -------------10/27/2016 11:01:00 27-Okt-16 27/10/2016 12:00:002) Jangan pernah mengandalkan konversi implisit string menjadi tanggal, atau tanggal menjadi string. Selalu lakukan konversi secara eksplisit dengan fungsi TO_CHAR, TO_DATE, dan TO_TIMESTAMP, atau gunakan literal ANSI DATE atau TIMESTAMP.
3) Saat melakukan perbandingan tanggal atau stempel waktu, selalu pertimbangkan dampak komponen waktu. Jika Anda ingin mengurangi komponen waktu dari perbandingan, gunakan TRUNC atau PUTAR berfungsi untuk menghapusnya dari kedua sisi perbandingan.pilih * dari fnd_table di mana trunc(creation_date)4) Anda dapat menampilkan format tanggal yang diperlukan menggunakan nls_date_format di tingkat sesi
Ubah format tanggal di oracle menggunakan nls_date_format
ALTER SESSION SET NLS_DATE_FORMAT ='YYYY MM DD';pilih tanggal sistem dari ganda;ALTER SESSION SET NLS_DATE_FORMAT ='HH24:MI:SS';pilih tanggal sistem dari ganda;ubah set sesi nls_date_format ='dd-mon-yyy mi:ss';pilih sysdate dari dual;5) Berikut adalah ringkasan yang baik dari format waktu yang dapat kita gunakan
Elemen Deskripsi Elemen Format Tanggal SCC atau CC Abad; S awalan tanggal SM dengan – YYYY atau SYYYY Tahun; S awalan tanggal SM dengan – YYY atau YY atau Y 3, 2, atau 1 digit terakhir tahun ini Y,YYY Tahun dengan koma di posisi ini IYYY, IYY, IY, I 4, 3, 2, atau 1 digit tahun berdasarkan standar ISO SYEAR atau TAHUN Tahun dieja; S awalan tanggal SM dengan – SM atau AD Indikator SM/AD SM atau M. Indikator BC/AC dengan titik Q Kuartal tahun MM Bulan, nilai dua digit BULAN Nama bulan diisi dengan kosong hingga panjang 9 karakter SEN Nama bulan, singkatan tiga huruf RM Bulan angka Romawi WW atau W Minggu dalam setahun atau bulan DDD atau DD atau D Hari dalam setahun, bulan atau minggu HARI Nama hari diisi dengan kosong hingga panjang 9 karakter DY Nama hari; 3 huruf singkatan J hari Julian; jumlah hari sejak 31 Desember 4713 SM Elemen Format Waktu AM atau PM Indikator meridian A.M. atau P.M. Indikator meridian dengan titik HH atau HH12 atau HH24 Jam atau jam (1-12) atau jam (0-23) MI Menit (0-59) SS Kedua (0-59) SSSSS Beberapa detik lewat tengah malam (0-86399) Sufiks TH Nomor urut (yaitu DDTH untuk 5TH) SP Nomor yang dieja (yaitu DDSP untuk LIMA) SPTH atau THSP Nomor urut yang dieja (yaitu DDSPTH untuk KELIMA) Elemen Pemformatan Lainnya / , . Tanda baca direproduksi dalam hasil “dari” String yang dikutip direproduksi dalam hasil fungsi tanggal oracle
Kita telah mempelajari tentang tipe data Tanggal dan Waktu di bagian sebelumnya. Sekarang kita akan melihat fungsi tanggal oracle yang penting secara detail dan bagaimana kita dapat menggunakannya
ADD_MONTHS
Fungsi Tanggal Deskripsi ADD_MONTHS (tanggal, n) Mengembalikan nilai tanggal setelah menambahkan 'n' bulan ke tanggal 'x'. pilih ADD_MONTHS ('16-Sep-81', 3) dari dual----------------------------16-Des- 81ADD_MONTHS selalu menggeser tanggal sepanjang bulan. Anda dapat memberikan nilai pecahan untuk parameter month_shift, tetapi ADD_MONTHS akan selalu membulatkan ke bawah ke bilangan bulat terdekat dengan nol, seperti yang ditunjukkan pada
contoh berikut:Jadi
pilih ADD_MONTHS ('28-FEB-2005', 1.5) dari dual-------------------------------- -----------31-Mar-2005Kita juga bisa menggunakan nilai negatif
pilih ADD_MONTHS ('28-FEB-2005', -1) dari dual------------------------------31 -Jan-2005Hari_Terakhir
Fungsi Tanggal Deskripsi HARI_TERAKHIR (x) Digunakan untuk menentukan jumlah hari yang tersisa dalam sebulan dari tanggal 'x' yang ditentukan. Fungsi LAST_DAY mengembalikan tanggal hari terakhir bulan itu untuk tanggal tertentu. Fungsi ini berguna karena jumlah hari dalam sebulan bervariasi sepanjang tahun.
pilih LAST_DAY ('01-Jun-16') dari dual---------------------------------- -------------------30-Jun-2016Hari_berikutnya
Fungsi Tanggal Deskripsi NEXT_DAY (x, week_day) Mengembalikan tanggal berikutnya dari 'week_day' pada atau setelah tanggal 'x' terjadi. NEXT_DAY mengembalikan tanggal hari kerja pertama yang dinamai menurut hari yang lebih lambat dari tanggal tersebut. Tipe yang dikembalikan selalu DATE, terlepas dari tipe data tanggal. Hari argumen harus berupa hari dalam seminggu dalam bahasa tanggal sesi Anda, baik nama lengkap atau singkatannya
pilih NEXT_DAY ('01-Jun-08', 'Rabu') dari dual------------------------------ -------------04-JUN-08MONTHS_BETWEEN
Fungsi Tanggal Deskripsi MONTHS_BETWEEN (x1,x2) Mengembalikan jumlah bulan antara tanggal x1 dan x2. Fungsi MONTHS_BETWEEN menghitung jumlah bulan antara dua tanggal dan mengembalikan perbedaan tersebut sebagai angka
Aturan penghitungannya adalah
1)Jika tanggal1 datang setelah tanggal2, maka MONTHS_BETWEEN mengembalikan angka positif.
2) Jika tanggal1 datang sebelum tanggal2, maka MONTHS_BETWEEN mengembalikan angka negatif.
3) Jika tanggal1 dan tanggal2 keduanya jatuh pada hari terakhir bulannya masing-masing, maka MONTHS_BETWEEN mengembalikan bilangan bulat (tidak ada komponen pecahan).
4)Jika tanggal1 dan tanggal2 berada di bulan yang berbeda dan setidaknya salah satu tanggal bukan hari terakhir dalam bulan tersebut, MONTHS_BETWEEN mengembalikan a bilangan pecahan. Komponen pecahan dihitung berdasarkan 31 hari dan juga mempertimbangkan perbedaan dalam komponen waktu tanggal1 dan tanggal2.Contoh
pilih MONTHS_BETWEEN ('29-FEB-2016', '31-MAR-20') dari ganda-------------------------- -------------------------------------------------- -----1pilih MONTHS_BETWEEN ('31-MAR-1995', '28-FEB-1994') dari dua------------------------ -------------------------------------------------- -----13pilih MONTHS_BETWEEN ('31-JAN-2006', '10-MAR-2006') dari dual------------------------ -------------------------------------------------- ---1.3225806SELECT MONTHS_BETWEEN(TO_DATE('02-02-1995','MM-DD-YYYY'),TO_DATE('01-01-1995','MM-DD-YYYY') ) "Bulan"FROM DUAL;Bulan----------1.03225806Poin penting untuk diingat
MONTHS_BETWEEN menghitung komponen pecahan dari jumlah bulan dengan mengasumsikan bahwa
setiap bulan memiliki 31 hari. Oleh karena itu, setiap hari tambahan selama satu bulan penuh dihitung 1/31 bulan, dan:
1 dibagi 31 =.032258065Putaran
Fungsi Tanggal Deskripsi PUTAR (x, format_tanggal) Mengembalikan tanggal 'x' yang dibulatkan ke abad, tahun, bulan, tanggal, jam, menit, atau detik terdekat seperti yang ditentukan oleh 'date_format'. Fungsi ROUND membulatkan nilai tanggal ke tanggal terdekat seperti yang ditentukan oleh format mask. Ini seperti fungsi ROUND numerik standar, yang membulatkan angka ke angka terdekat dari presisi yang ditentukan, kecuali bahwa ia bekerja dengan tanggal
Contoh
Pilih ROUND (TO_DATE ('12-MAR-2016'), 'MONTH') dari dual;01-MAR-2016Pilih ROUND (TO_DATE ('17-MAR-2016'), 'MONTH') dari dual;01 -APR-2016pilih ROUND (TO_DATE ('01-MAR-2007'), 'YYYY') dari ganda;01-JAN-2007pilih ROUND (TO_DATE ('01-SEP-2007'), 'YEAR') dari ganda;01 -JAN-2008Trunc
Fungsi Tanggal Deskripsi TRUNC (x, format_tanggal) Mengembalikan tanggal 'x' yang lebih kecil atau sama dengan abad, tahun, bulan, tanggal, jam, menit, atau detik terdekat seperti yang ditentukan oleh 'date_format'. Contoh
Pilih TRUNC (TANGGAL_TO ('12-MAR-2016'), 'MONTH') dari dual;01-MAR-2016 Pilih TRUNC (TO_DATE ('17-MAR-2016'), 'MONTH') dari dual; 01-MAR-2016 pilih TRUNC (TO_DATE ('01-MAR-2007'), 'YYYY') dari ganda;01-JAN-2007pilih TRUNC (TO_DATE ('01-SEP-2007'), 'YEAR') dari dua;01-JAN-2007Aritmatika Dengan tanggal Oracle
Kami dapat melakukan banyak operasi aritmatika pada tipe data tanggal Oracle. Kami dapat menambah atau mengurangi angka ke atau dari tanggal untuk nilai tanggal yang dihasilkan. kita dapat Kurangi dua tanggal untuk menemukan jumlah hari di antara tanggal-tanggal tersebut. kami Menambahkan jam hingga saat ini dengan membagi jumlah jam dengan 24.
Contoh Penjumlahan dan Pengurangan
SQL> pilih sysdate, sysdate+1/24, sysdate +1/1440, sysdate + 1/86400 from dual;SYSDATE SYSDATE+1/24 SYSDATE+1/1440 SYSDATE+1/86400------ -------------- ---------------------------------------------------- ---- --------------------01-Jul-2016 06:32:12 01-Jul-2016 07:32:12 01-Jul-2016 06 :33:12 01-Jul-2016 06:32:13Cara lain yang bisa kita gunakan adalah
Deskripsi Ekspresi Tanggal Sekarang Tanggal Sistem Besok/ hari berikutnya Sysdate +1 Tujuh hari yang lalu SYSDATE -7 Satu jam dari sekarang SYSDATE + 1/24 Tiga jam dari sekarang SYSDATE + 3/24 atau SYSDATE + 1/8 Setengah jam dari sekarang SYSDATE + 1/48 10 menit dari sekarang SYSDATE + 10/1440 30 detik dari sekarang SYSDATE + 30/86400 Operasi aritmatika pada perbedaan tanggal untuk menemukan jumlah hari di antara mereka
Kita dapat mengurangi dua tanggal untuk menemukan perbedaan hari antara tanggal
Jika bagian waktunya sama, maka akan selalu bilangan bulatSELECT TO_DATE('25-MAR-2016 11:00:00 AM', 'DD-MON-YYYY HH:MI:SS AM')- TO_DATE(' 19-MAR-2016 11:000:00 AM', 'DD-MON-YYYY HH:MI:SS AM') diff_in_daysFROM dual;DIFF_IN_DAYS----------6Jika bagian waktunya tidak sama, maka itu akan selalu memiliki komponen pecahanSELECT TO_DATE('25-MAR-2016 10:00:00 AM', 'YYYYMMDD HH:MI:SS AM')- TO_DATE('19-MAR-2016 11:00:00 AM', 'YYYYMMDD HH:MI:SS AM') diff_in_daysFROM dual;DIFF_IN_DAYS----------5.958333333SQL> SELECT TO_DATE('25-MAR-2016 11:00:00 AM', 'YYYYMMDD HH:MI:SS AM')- TO_DATE('19-MAR-2016 10:00:00 AM', 'YYYYMMDD HH:MI:SS AM') diff_in_daysFROM dual;DIFF_IN_DAYS----------6.04166666Kami dapat menemukan perbedaan tanggal oracle dalam Bulan menggunakan kueri
SELECT MONTHS_BETWEEN(TO_DATE('02-02-1995','MM-DD-YYYY'),TO_DATE('01-01-1995','MM-DD-YYYY') ) "Diff_in_Months", (TO_DATE ('02-02-1995','MM-DD-YYYY')-TO_DATE('01-01-1995','MM-DD-YYYY') diff_in_daysFROM DUAL;Diff_in_Months diff_in_days--------- -------------------------------1.03225806 32Kami juga dapat menemukan perbedaan tanggal oracle dalam tahun menggunakan kueri
SELECT (TO_DATE('20130525', 'YYYYMMDD') - TO_DATE('20100101', 'YYYYMMDD')) diff_in_days , MONTHS_BETWEEN(TO_DATE('20130525', 'YYYYMMDD'), TO_DATE('201001Y'YMM('201001Y) ')) Diff_in_months,TRUNC(MONTHS_BETWEEN(TO_DATE('20130525', 'YYYYMMDD'), TO_DATE('20100101', 'YYYYMMDD'))) Diff_in_months_no_fraction,TRUNC(TRUNC'MM'2013_BETY('2013_BETY' , TO_DATE('20100101', 'YYYYMMDD'))) / 12) Diff_in_years_no_fraction,MOD(TRUNC(MONTHS_BETWEEN(TO_DATE('20130525', 'YYYYMMDD'), TO_DATE('20100101', 'YYYYMMDD'))YYMMDD Diff_in_years_fraction_in_monthsfrom dual; diff_in_days diff_in_months diff_in_months_no_fraction Diff_in_year_no_fraction diff_in_years_fraction_in_months____________________________________________________________________________2. 40. 40. 40. 40
Semoga Anda menyukai posting pada tipe data tanggal Oracle. Saya telah mencoba menjelaskan berbagai hal seperti fungsi tanggal Oracle, format tanggal Oracle sql, perbandingan tanggal Oracle sql, perbedaan tanggal Oracle dalam tahun, perbedaan tanggal Oracle dalam hari, perbedaan tanggal Oracle dalam bulan. Ini bukan panduan lengkap tetapi saya telah mencoba menyajikan banyak informasi berguna untuk pengembang oracle sqlArtikel terkait
cara menulis kueri sql
Tutorial Oracle sql :Pernyataan Sql Dasar
Tutorial Oracle sql :Membatasi kumpulan data
Fungsi baris tunggal dalam sql
Pemrosesan dekode sql Oracle
Unduh Pengembang Oracle SQL
https://docs.Oracle.com/cd/B28359_01/olap.111/b28126/dml_commands_1029.htm#OLADM780