Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara bekerja dengan Fungsi tanggal di Oracle sql

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:00 

Beberapa 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:00

2) 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- 81

ADD_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-2005

Kita juga bisa menggunakan nilai negatif

pilih ADD_MONTHS ('28-FEB-2005', -1)               dari dual------------------------------31 -Jan-2005

Hari_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-2016

Hari_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-08

MONTHS_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.03225806

Poin 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 =.032258065

Putaran 

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-2008

Trunc

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-2007

Aritmatika 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:13

Cara 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.04166666

Kami 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              32

Kami 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 sql

Artikel 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendeklarasikan variabel dan menetapkan nilainya dari kueri SELECT di Oracle

  2. Memisahkan string menjadi beberapa baris di Oracle

  3. CONCAT() Fungsi di Oracle

  4. Menyiapkan lingkungan pengembangan untuk mempelajari PL/SQL

  5. Konversi tanggal ke string Oracle