SQL DateTime Fonksiyonlarının Kullanımı

SQL DateTime Fonksiyonları, SQL’de en çok kullanacağımız fonksiyonlardan bazılarıda datetime fonksiyonlarıdır kimi zaman yaş, ay, yıl, gün veya tarih ekleme çıkarma gibi işlemlere ihtiyaç duyarız SQL tarafında bu ihtiyaçlarımızı DateTime Fonksiyonları karşılamaktadır.

SQL DateTime Fonksiyonlarının Kullanımı

SQL DateTime Fonksiyonlarının Kullanımı

Sql Server DateTime(Tarih Saat) Fonksiyonları

FonksiyonAçıklama
GETDATE()Sistemin o anki tarih ve saatini verir
DATEDIFF()İki tarih arasındaki farkı gösterir
DATEADD()Parametre olarak geçeceğimiz tarih’e gün, ay, yıl eklemek için kullanırız.
DATEPART()Parametre olarak geçtiğimiz tarihin sadece gün, ay, yıl şeklinde parçalayıp alabiliriz.
CONVERT()Tarih ve saat veri türlerini farklı formatlarda göstermek için kullanabiliriz.
DAY()Parametre olarak geçtiğimiz tarihin gün kısmını verir.
MONTH()Parametre olarak geçtiğimiz tarihin ay kısmını verir.
YEAR()Parametre olarak geçtiğimiz tarihin yıl kısmını verir.

Şimdi ise Örneklere Geçelim

1- Getdate Fonksiyonu ile bugünün tarihini alalım

Bu fonksiyonda ise GETDATE() fonksiyonu ile bugünün tarihini alıyoruz.

2- Datediff Fonksiyonu ile belirlediğimiz bir tarih ile bugünkü tarih arasındaki gün sayısını alalım

Bu fonksiyonda ise ilk parametrede hesaplanacak iki tarih arasındaki sonucun size ne olarak geri dönmesini istersiniz ben DAY yazarak sonucun bana gün olarak geri dönmesini sağlıyorum 2.parametreye başlagıç tarihi belirtilmelidir siz buraya tablonuzda bulunan bir alanı kullanabilirsiniz ama ben manuel olarak girilmiş bir tarih yazıyorum 3.parametreye ise bitiş tarihi belirtilmektedir

3- DateAdd Fonksiyonu ile bugünkü tarihe gün,ay, yıl ekleme

Bu örneğimizde DATEADD fonksiyonun ilk parametresine ekleme yapacağımız tarih formatını belirtiyoruz DAY(GÜN), MONTH(AY), YEAR(YIL) olarak ve ikinci parametrede ise ekleme yapılacak değeri belirtiyoruz 3.parametrede ise siz tablonuzdan bir alanı belirtebilirsiniz ama ben örnek olarak bugünün tarihini GETDATE() fonksiyonuyla alıyorum.

4- DatePart Fonksiyonu ile belirli tarih içerisinden Gün, Ay, Yıl olarak parça halinde alabiliriz.

Bu sorguda DATEPART fonksiyonunun birinci parametresinde kullanılan DAY(GÜN) fonksiyonu ile 2.parametrede kullanmış olduğumuz GETDATE fonksiyonuyla bugünün tarihinden sadece günü alıyoruz.

5,6,7- DAY, MONTH, YEAR fonksiyonları ile GÜN, AY, YILI alma

Bu fonksiyonlar ile tablonuzda bir tarih alanını belirtebilir isterseniz aşağıdaki örnekte olduğunu GETDATE fonksiyonunu kullanarak parça halinde Gün, Ay, Yılı alabilirsiniz

Sql Server Tarih Veri Türleri

Şimdide Sql Server tarih veya tarih/saat veri tiplerinin veritabanında hangi formatta saklandığı ile ilgili bilgilere gözatalım

Veri TürüSaklanma Formatı
DATEYYYY:MM:DD
DATETIMEYYYY-MM-DD HH:MI:SS
SMALLDATETIMEYYYY-MM-DD HH-MI:SS
TIMESTAMPBenzersiz bir sayı

Kaynak

SQL DateTime Fonksiyonlarının Kullanımı
4.4 (88%) 10 oy

Murat ÖNER

1989 yılında Kocaelinin Dilovası ilçesinde doğdum ilkokul ve lise eğitimimi Kocaeli’de aldım, önlisans üniversite eğitimimi Mehmet Akif Ersoy Üniversitesi Gölhisar Meslek Yüksekokulu’nda bilgisayar programcılığı bölümünde yaptım. Üniversite dönemi boyunca Microsoft'un student partner projesinde yer aldım ve diğer student partner öğrencileri ile birçok farklı projede yer aldım. Üniversite eğitimi tamamlandıktan sonra staj yapmış olduğum Ries Technologies şirketinde yazılım geliştirici ve web designer olarak görev aldım ardından Gen Yazılım firmasında ERP ve HBYS sistemleri ile ilgili yazılım geliştirmeye devam ettim. Şuan aktif olarak mobil, web ve masaüstü uygulamalar geliştirmeye devam etmekteyim.

Sevebilirsin...

10 Yanıt

  1. mahmut dedi ki:

    merhaba murat bey, sql tablomuzda date formatı tanımladım fakat şöyle bir problem ortaya çıktı; 2017-02-01 olan tablo ikinci kayıt yapıldığında 2017-01-02 olarak işleniyor. yani gün- ay / ay-gün yer değiştiriyor ve bunu bir türlü çözemedim. sizin bir öneriniz var mıdır?

    • Murat ÖNER dedi ki:

      Normalde tarih işlemleri için seçtiğiniz sql server veritabanı YYYY-MM-DD formatında saklamaktadır. Ki zaten sizde ilk formatın o şekilde olduğunu belirttiniz eğer alan tipiniz gerçekten date ise böyle bir durumun yaşanmaması gerekiyor bu durum için veritabanı Collation’unu kontrol edin isterseniz yada çözüm için insert yada update aşamasında CONVERT(date, ’23-12-2017′, 103) şöyle bir yöntemlede belki ilerleyebilirsiniz.

  2. ali tuner dedi ki:

    Aklım iyice karıştı… Alışveriş sitesi tasarlarken kullanabileceğimiz ve kafa karışıklığına mahal vermeyecek doğru format nedir ? Datetime değil çünkü yerel saati getiriyor meret. Zaman kaşesi mi kullanacağız ? Stamp denen zımbırtı…

    Birisi ürün aldı iade etmek istedi. Yaz saatinde aldı kış saatinde verdi. 1 saatlik değişim bile sistemi dengesizleştiriyor ona bakarsak.

    Bir kişi ayakkabı aldı saat 4 gibi ondan sonraki sipariş saat 3 de. Oldu mu şimdi ?!?

    Ne önerirsiniz Murat Bey ? Zaman kaşesi kullanıp yerel saate c# ile convert mü elelim her vakit ?!?

    • Murat ÖNER dedi ki:

      Merhaba Ali Bey,

      Alışveriş sitesi gibi çok fazla kişiye hitap eden projelerde tarih v.b. işlemlerin server side yapılması taraftarıyım local tarihler sıkıntı oluşturabilmektedir ve oynanabilmektedir maalesef. Bunun için sipariş tarihi yada iade tarihi gibi işlemlerin server side yapılır ise bir sıkıntı oluşturacağını düşünmüyorum.

  3. abdullah dedi ki:

    select *from zamanlar tablomdaki saat 10:00 aolarak girilen veriyi datepart kullanarak sistem saati 10 olduğu zaman nasıl çekebilirim ?

    • Murat ÖNER dedi ki:

      Veriyi belirlenmiş bir tarih veya saatte çekmek için programlama tarafında(C#, PHP, Delphi v.b) task scheduler kütüphanesi kullanarak yapabilirsiniz. Sizin belirtmiş olduğunuz tablodaki saat alanı sistem saati ile eşleştiğinde task scheduler devreye girecek ve istediğiniz sorguyu bu şekilde çalıştırabileceksiniz tabi task scheduler’e zamanlar tablonuzdaki tüm zamanlanacak görevleri eklemelisiniz.

      • abdullah dedi ki:

        peki hocam asp.net’te dediğinizi kullanarak yaptım başarı ile çektim web sayfasını saat 10:00 da açtım saat on oldu adlı görev ekranda yazılı , saat 11:00’a geldiğinde dinamik olarak saat on bir oldu bilgisi gelirmi ?

        • Murat ÖNER dedi ki:

          Gelir bunu iki farklı yöntem ile yapabilirsin her dakikada bir javascript settimeout ile kontrol edebilirsin yada eğer trafik yüksek olan bir site olacak ise her dakikada bir sunucuya gidip gelmesi sorun olabilir bu durumda socket programlama ile yapabilirsiniz.

Bir Cevap Yazın

%d blogcu bunu beğendi: