Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Menggunakan Fungsi DATEADD, DATEDIFF dan DATEPART T-SQL dalam Istilah Sederhana

Artikel ini berfokus pada pengembangan pemahaman dasar tentang cara menggunakan salah satu fungsi tanggal Transact-SQL yang paling umum:DATEADD, DATEDIFF, dan DATEPART.

Dalam artikel ini, saya juga menekankan pentingnya menggunakan fungsi tanggal ini dengan benar dalam manipulasi tanggal harian diikuti oleh beberapa skenario menarik di mana fungsi tanggal ini dapat digunakan secara kolaboratif untuk menyelesaikan perhitungan tanggal yang sedikit rumit.

Karena fungsi-fungsi ini terutama digunakan dalam manipulasi tanggal, pertama-tama mari kita coba memahami apa yang kita maksud dengan manipulasi tanggal.

Memahami Manipulasi Tanggal

Nilai tanggal-waktu sering kali perlu dimodifikasi sesuai kebutuhan, dan metode memodifikasi atau menangani atau mengendalikan perhitungan tanggal-waktu dikenal sebagai manipulasi tanggal.

Kami juga mengacu pada situasi ini (manipulasi tanggal) ketika nilai tanggal dibaca dari database dan kemudian dimodifikasi sebelum disimpan lagi.

Skenario Pesanan Pelanggan

Contoh manipulasi tanggal yang menarik adalah pesanan pelanggan skenario, ketika pesanan ditempatkan oleh pelanggan diproses, tanggal pengiriman harus ditetapkan 5 hari sebelum tanggal pemesanan , jadi ini berarti bahwa pengembang harus menggunakan fungsi tanggal T-SQL untuk memanipulasi (memodifikasi) tanggal pemesanan untuk menghitung tanggal pengiriman .

Contoh Laporan Penjualan Harian

Contoh yang agak rumit adalah ketika pengguna bisnis menjalankan Laporan Penjualan Harian jika itu menunjukkan hasil kemarin.

Misalnya, jika kita menjalankan Laporan Penjualan Harian pada hari minggu jam 11.00 akan menampilkan hasil berdasarkan hari sabtu, dan jika kita menjalankannya pada hari sabtu jam 17.00 maka akan tampil semua hasil pada hari jumat, karena hari ini belum berakhir dan yang terbaru hari lengkap yang tersedia adalah kemarin. Beginilah cara sebagian besar laporan harian profesional termasuk laporan keuangan dirancang untuk dijalankan.

Dalam contoh ini, tanggal saat ini dimanipulasi (dimodifikasi) untuk mendapatkan tanggal sebelumnya, yang berisi catatan penjualan selama satu hari penuh.

Menerapkan Contoh

Harap ingat contoh di atas karena kami akan menerapkan skenario ini setelah kami mendapatkan pemahaman yang baik tentang penggunaan beberapa fungsi tanggal paling umum yang dijelaskan dalam artikel ini.

Memahami Fungsi Tanggal

Pertama-tama mari kita lihat beberapa fungsi tanggal dasar yang dapat membantu kita memenuhi persyaratan manipulasi tanggal, seperti menentukan hari di antara dua tanggal (tanggal pemesanan dan tanggal pengiriman), mendapatkan catatan penjualan minggu lalu berdasarkan tanggal saat ini atau menghitung perkiraan tanggal kedaluwarsa berdasarkan tanggal tanggal produksi dan sebagainya.

Karena tidak ada aturan keras dan cepat, kami mulai menjelajahi fungsi DATEPART terlebih dahulu.

Menggunakan Fungsi DATEPART

Definisi Sederhana

Fungsi DATEPART digunakan untuk mengembalikan bagian dari tanggal tertentu dalam nilai numerik.

Bagian tersebut dapat berupa hari tanggal, bulan tanggal, tahun tanggal dll.

Misalnya, kita dapat menggunakan fungsi DATEPART untuk mendapatkan hari dari tanggal tertentu untuk menentukan apakah pesanan dilakukan pada hari Minggu atau tidak.

Contoh lain adalah mendapatkan bulan dari tanggal tertentu untuk diteruskan ke fungsi tanggal lain untuk diproses lebih lanjut.

Definisi Microsoft

Fungsi ini mengembalikan bilangan bulat yang mewakili datepart . yang ditentukan dari tanggal yang ditentukan .

Kompatibilitas

Menurut dokumentasi Microsoft, fungsi ini kompatibel dengan versi SQL Server berikut:

  1. SQL Server 2008 plus
  2. Database SQL Azure
  3. Gudang Data Azure SQL
  4. Gudang Data Paralel

Sintaks

DATEPART (datepart , tanggal)

Contoh 1:Mendapatkan Tahun Bagian dari Tanggal

Mari kita juga menentukan tanggal tertentu (OrderDate ) untuk mendapatkan bagian yang diinginkan (Hari, Bulan, Tahun) menggunakan fungsi DATEPART.

Untuk mendapatkan Tahun dari tanggal pemesanan, kita cukup melewati YEAR diikuti oleh Tanggal Pemesanan (@TanggalPesanan) di BAGIAN TANGGAL fungsinya sebagai berikut:

-- Tentukan Tanggal PesananDECLARE @OrderDate DATETIME2='2017-01-11'-- Mendapatkan Tahun Tanggal PesananSELECT DATEPART(YEAR,@OrderDate) sebagai Year_OrderDate

Contoh 2:Mendapatkan Bagian Bulan

Jika kita tertarik untuk mengetahui bulan dari tanggal maka Bulan harus diteruskan ke DATEPART fungsinya sebagai berikut:

-- Tentukan Tanggal PesananDECLARE @OrderDate DATETIME2='2017-01-11'-- Mendapatkan Bulan Tanggal PesananSELECT DATEPART(MONTH,@OrderDate) sebagai Month_OrderDate

Contoh 3:Mendapatkan Bagian Hari

Untuk menemukan bagian Hari dari tanggal, cukup lewati DAY ke DATEPART fungsinya sebagai berikut:

-- Tentukan Tanggal PesananDECLARE @OrderDate DATETIME2='2017-01-11'-- Mendapatkan Hari Tanggal PesananSELECT DATEPART(DAY,@OrderDate) sebagai Day_OrderDate

Contoh 4:Mendapatkan Bagian Hari Minggu

Untuk mendapatkan bagian Hari Minggu dari tanggal, cukup lewati WEEKDAY ke DATEPART fungsinya sebagai berikut:

-- Tentukan Tanggal PesananDECLARE @OrderDate DATETIME2='2017-01-11'-- Mendapatkan Hari Minggu dari Tanggal PesananSELECT DATEPART(WEEKDAY,@OrderDate) sebagai WeekDay_OrderDate

Kami mendapatkan 4, yaitu Rabu mulai dari Minggu, yaitu 1.

Demikian pula, kita juga bisa mendapatkan bagian Seperempat, Jam, Menit, Kedua dari tanggal.

Mari kita beralih ke fungsi tanggal berikutnya.

Menggunakan Fungsi DATEADD

Definisi Sederhana

Fungsi DATEADD digunakan untuk menambah atau mengurangi tanggal.

Misalnya, kita dapat mengetahui tanggal berapa setelah empat hari atau empat hari sebelumnya.

Ini sangat berguna dalam skenario di mana tanggal yang diharapkan harus dihitung berdasarkan tanggal tertentu seperti tanggal kedaluwarsa keanggotaan harus tepat satu tahun dari tanggal pendaftaran.

Contoh lain adalah menghitung tanggal akhir kursus yang harus tepat dua bulan setelah tanggal mulai kursus.

Definisi Microsoft

Fungsi ini menambahkan nomor yang ditentukan nilai (sebagai bilangan bulat yang ditandatangani) ke bagian tanggal yang ditentukan dari masukan tanggal nilai, lalu mengembalikan nilai yang dimodifikasi itu.

Kompatibilitas

Menurut dokumentasi Microsoft, fungsi ini kompatibel dengan versi SQL Server berikut:

  1. SQL Server 2008 plus
  2. Database SQL Azure
  3. Gudang Data Azure SQL
  4. Gudang Data Paralel

Sintaks

DATEADD (bagian tanggal, nomor, tanggal)

Datepart adalah setiap bagian dari tanggal seperti hari, bulan, tahun, hari kerja, jam dll.

Number adalah nomor bagian tanggal (hari, bulan, tahun, dll.) yang akan ditambahkan atau dikurangi

Tanggal adalah tanggal tertentu yang perlu ditambahkan atau dikurangi menggunakan fungsi DATEADD

Contoh 1:Mendapatkan Tanggal Tahun Depan

Mari kita juga menentukan tanggal tertentu (Tanggal Pendaftaran) yang akan ditambahkan atau dikurangi menggunakan DATEADD fungsi berdasarkan kebutuhan.

Tanggal tahun berikutnya dapat diperoleh dengan menambahkan 1 ke bagian tanggal Tahun.

Untuk mendapatkan tahun berikutnya dari tanggal pendaftaran, kita cukup menambahkan DatePart Tahun diikuti oleh 1 diikuti oleh Tanggal Pendaftaran (@Tanggal Pendaftaran) di DATEADD fungsinya sebagai berikut:

-- Tentukan Tanggal PendaftaranDECLARE @RegDate DATETIME2='2018-07-10'-- Mendapatkan Tahun Depan dari tanggal pendaftaranSELECT DATEADD(YEAR,1,@RegDate) sebagai NextYear_RegDate

Contoh 2:Mendapatkan Tanggal Bulan Depan

Untuk mendapatkan Tanggal Bulan Depan, lewati BULAN datepart ke DATEADD fungsi diikuti dengan jumlah bulan yang ingin kita tambahkan diikuti oleh tanggal yang diberikan yang merupakan tanggal pendaftaran (RegDate) dalam kasus kita.

-- Tentukan Tanggal PendaftaranDECLARE @RegDate DATETIME2='2018-07-10'SELECT @RegDate AS RegDate -- Tampilkan Tanggal Pendaftaran-- Mendapatkan BULAN Berikutnya dari tanggal pendaftaranSELECT DATEADD(MONTH,1,@RegDate) sebagai NextMonth_RegDate 

Contoh 3:Mendapatkan Tanggal Hari Berikutnya

Jika kursus dimulai pada hari pendaftaran berikutnya (berikutnya), kami harus melewati DAY dengan 1 karena hari berikutnya menambah hari lain untuk tanggal pendaftaran, yang ditunjukkan sebagai berikut:

-- Tentukan Tanggal PendaftaranDECLARE @RegDate DATETIME2='2018-07-10'SELECT @RegDate AS RegDate -- Tampilkan Tanggal Pendaftaran-- Mendapatkan HARI Berikutnya dari tanggal pendaftaranSELECT DATEADD(DAY,1,@RegDate) sebagai NextDAY_RegDate 

Contoh 4:Menyiapkan Tanggal Laporan Penjualan Harian

Sekarang mari kita fokus pada skenario yang sedikit rumit yang sering digunakan dalam pengembangan laporan keuangan harian.

Jika kita ingin membuat laporan penjualan harian, maka harus menampilkan data kemarin, karena hari ini belum selesai dan hari lengkap terakhir adalah kemarin seperti yang dibahas di awal artikel ini.

Pada akhirnya, kita juga perlu mengonversi Date Time kemarin menjadi nilai Date only untuk memudahkan laporan tercakup sepanjang hari.

Untuk mendapatkan tanggal kemarin berdasarkan tanggal hari ini, kita perlu menambahkan “-1 hari” ke tanggal saat ini sebagai berikut:

-- Tentukan Tanggal Saat IniDECLARE @CurrentDate DATETIME2=GETDATE()SELECT @CurrentDate AS CurrentDate -- Tampilkan Tanggal Pendaftaran-- Mendapatkan Tanggal dan Waktu Kemarin dari tanggal saat iniSELECT DATEADD(DAY,-1,@CurrentDate) sebagai kemarinDateTime_CurrentDate-- Mengonversi Kemarin DateTime menjadi Date onlyPILIH CAST(DATEADD(DAY,-1,@CurrentDate) AS DATE)sebagai KemarinDateOnly_CurrentDate

Menggunakan Fungsi DATEDIFF

Definisi Sederhana

Fungsi DATEDIFF digunakan untuk menentukan perbedaan hari, bulan, tahun, jam, dll. antara dua tanggal.

Misalnya, kita dapat mengetahui berapa hari telah berlalu antara dua tanggal.

Ini juga sangat berguna dalam skenario di mana kita perlu menyelidiki perbedaan antara tanggal pengiriman pesanan yang diharapkan dan tanggal pengiriman pesanan yang sebenarnya.

Contoh lain adalah pelacakan waktu, yang berarti memahami berapa jam yang telah dihabiskan untuk proyek tertentu sejak dimulai hingga sekarang.

Definisi Microsoft

Fungsi ini mengembalikan hitungan (sebagai nilai integer yang ditandatangani) dari batas bagian tanggal yang ditentukan yang dilintasi antara tanggal mulai yang ditentukan dan tanggal akhir .

Kompatibilitas

Menurut dokumentasi Microsoft, fungsi ini kompatibel dengan versi SQL Server berikut:

  1. SQL Server 2008 plus
  2. Database SQL Azure
  3. Gudang Data Azure SQL
  4. Gudang Data Paralel

Sintaks

DATEDIFF ( datepart , startdate , enddate )

Datepart adalah setiap bagian dari tanggal seperti hari, bulan, tahun, hari kerja, jam dll.

Contoh 1:Memahami Perbedaan Hari

Mari kita coba memahami bagaimana DATEDIFF fungsi berfungsi.

Jika kita mencoba mencari perbedaan hari antara 01 Juli 2018 dan 02 Juli 2018, kita akan mendapatkan 1 hari, yang berarti mengurangi tanggal akhir dari tanggal mulai untuk mendapatkan perbedaan:

SELECT DATEDIFF(DAY,'01 JULY 2018','02 JULY 2018') AS Days_Between_Two_Consecutive_DatesSELECT DATEDIFF(DAY,'01 JULY 2018','03 JULY 2018') AS Days_Between_01_July_03_July

Contoh 2:Mendapatkan Hari antara Pemesanan dan Pengiriman

Mari kita tentukan dua tanggal yang berbeda, Tanggal Pemesanan dan Tanggal Pengiriman, yang akan digunakan untuk menentukan perbedaan hari, bulan, tahun, jam dll.

Untuk mengetahui jumlah hari antara tanggal pemesanan dan tanggal pengiriman, bagian tanggal DAY dimasukkan ke DATEDIFF fungsi diikuti oleh Tanggal Mulai (TanggalPesanan) dan Tanggal Berakhir (Tanggal Pengiriman) :

-- Tentukan Tanggal Pesanan dan Tanggal Pengiriman PesananDECLARE @OrderDate DATETIME2='28 Juli 2018'DECLARE @DeliveryDate DATETIME2='07 Agustus 2018'SELECT @OrderDate AS OrderDate,@DeliveryDate sebagai DeliveryDate-- Tampilkan Tanggal Pesanan dan Pengiriman-- Mendapatkan perbedaan hari antara tanggal pemesanan dan tanggal pengirimanSELECT DATEDIFF(DAY,@OrderDate,@DeliveryDate) sebagai Days_Between_Order_and_Delivery

Contoh 3:Mendapatkan Jam Proyek (Pelacakan Waktu)

Ini adalah contoh menarik dari pelacakan waktu menggunakan fungsi DATEDIFF.

Misalnya, kami tertarik untuk mengetahui berapa hari dan hari dalam jam dan hari dalam menit yang kami habiskan untuk proyek tertentu, dan kemudian kami akan memasukkan bagian tanggal DAY ke fungsi DATEDIFF, di mana tanggal mulainya adalah tanggal saat proyek dimulai dan tanggal berakhirnya adalah tanggal hari ini diikuti dengan melewati HOUR dan kemudian melewati MENIT sebagai berikut:

-- Tentukan Tanggal Mulai ProyekDECLARE @ProjectStartDate DATETIME2='10 Nov 2018'SELECT @ProjectStartDate SEBAGAI ProjectStartDate-- Tampilkan Tanggal Mulai Proyek-- Mendapatkan Jumlah hari yang dihabiskan untuk proyek sejauh iniSELECT DATEDIFF(DAY,@ProjectStartDate,GETDATE( )) sebagai Project_Days_So_Far-- Mendapatkan Jumlah jam yang dihabiskan untuk proyek sejauh iniSELECT DATEDIFF(HOUR,@ProjectStartDate,GETDATE()) sebagai Project_Hours_So_Far-- Mendapatkan Jumlah menit yang dihabiskan untuk proyek sejauh iniSELECT DATEDIFF(MINUTE,@ProjectStartDate,GETDATE( )) sebagai Project_Minutes_So_Far

Selamat, Anda telah berhasil belajar menggunakan fungsi T-SQL DATEADD, DATEDIFF, dan DATEPART.

Hal yang Dapat Dilakukan

Sekarang setelah Anda mengetahui beberapa fungsi tanggal dasar, tantang diri Anda dengan mencoba hal-hal yang disebutkan di bawah ini:

  1. Silakan lihat artikel saya sebelumnya Prosedur Laporan Pengujian Unit – Langsung ke Mulai TDDD Bagian-4 untuk menyiapkan contoh database SQLDevBlogReportTDD, lalu buat tampilan untuk mengetahui jumlah bulan berdasarkan tanggal pendaftaran Penulis.
  2. Silakan lihat artikel saya sebelumnya Menyederhanakan Pengujian Unit Prosedur Tersimpan Utama yang Juga Memanggil Prosedur Utilitas untuk membuat contoh database SQLBookShop dan menambahkan DeliveryDate kolom ke Pesanan Buku tabel, lalu buat prosedur tersimpan baru ProcessOrder yang menggunakan DATEADD berfungsi untuk menambahkan perkiraan pengiriman lima hari setelah tanggal pemesanan.
  3. Silakan lihat artikel saya sebelumnya Langsung ke Mulai Test-Driven Database Development (TDDD) – Bagian 3 dan coba buat laporan harian menggunakan fungsi DATEADD T-SQL dengan memodifikasi data pada contoh database SQLDevBlogReportTDD sehingga ada cukup data untuk ditampilkan dalam laporan.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Ekspresi untuk Memfilter Data Database

  2. Melihat Kinerja Cuplikan Basis Data

  3. Referensi SQL untuk Pemula

  4. Seberapa besar dampak pilihan tipe data?

  5. ScaleGrid DBaaS Dipilih untuk Cloud Excellence Awards 2018