DateDiff()

16 03 2007

ilgili yazının güncel hali için lütfen

http://www.sadullahkeles.com/2007/03/16/datediff/

adresini ziyaret ediniz..

DateDiff fonksiyonu verilen iki tarih arasındaki farkı değişik türlerde(gün,ay,yıl…) bulmayı sağlar. Kullanımı : DATEDIFF ( datepart , startdate , enddate ) şeklindedir. datepart yerine aşağıdaki değerlerden biri gelebilir.

Örnek Kullanım :

select datediff(year,’2005.7.15′,’2007.7.15′)

şeklinde bir kullanım sonuç olarak 2 değerini gösterir.


İşlemler

Information

44 responses

14 06 2007
volkan

=DateDiff(““d””,Now(),firmalar.bitis_tarihi)
olarak kullandığımda #ad? sonucunu döndürüyor.
sebebi ne olabilir?

15 06 2007
Sadullah KELEŞ

hangi veritabanında kullanıyorsun bu kodu? ben bu örnekleri ms sql server için yazdım her sistem desteklemeyebilir. birde sql server da günün tarihini almak için getdate kullanılıyor.

15 06 2007
volkan

access ile kullanıyorum. datediff access ile kullanılabiliyor bunu biliyorum ama sanırım bir yerde hata yapıyorum.

15 06 2007
Sadullah KELEŞ

tarih alanında sıkıntı olabilir. şimdi access 2007 de denedim datediff(“d”,now(),tarihalanim) şeklinde ve çalıştı. tarih alanındaki bilgileri kontrol et. eğer uzun tarih türüyse kolona sığmama gibi bir durum olabilirmi? excelde oluyodu öyle kolona sığmayınca # işareti koyuyodu

15 06 2007
volkan

ahah🙂
teşekkürler hatamı gördüm. çift tırnak koymuşum d’ye. nereden esmişse🙂

15 06 2007
Sadullah KELEŞ

😀 bazen gözden kaçabiliyo işte. neyse geçmiş olsun

29 06 2007
SAygın

BEn Birşey Sorabilir Miyim , Peki ilk tarihi biliyorum 2 tarih database den gelse yani..

DateDiff(Year , ‘2007.01.01 ‘ ,Select DogumTarihi From Musteriler ) gibi

ya ben aslında iki tarih aralığındaki kayırların gelmesini istiyorum ama onu da yapamadım..

Yardım ederseniz Sadullah bey, sevinirim.

İyi Günler

25 07 2007
Sadullah KELEŞ

merhaba Saygın. cevabım biraz geç kaldı kusura bakma askerdeydimde😛 . senin yazdığın gibi bir cümlenin çalışacağını sanmıyorum çünki o select cümlesinin geriye birden fazla değer döndürme ihtimali var. müşteri doğum tarihi bilgisinin bulunduğu tablo üzerinde
select DateDiff(Year , ‘2007.01.01 ‘ ,tarihalanin ) from musteribilgileritablon
şeklinde bir sorgu kullanabilirsin bence

5 06 2008
nejdet

slm arkadaşlar projem varda bitirdim ama bir işlemim kaldı sadece bende iki saat arasındaki farkı yapamıyorum bunun komutlarını biliyormusunuz yardımcı olun lütfen çok az zamanım kaldı. şimiden teşekürler……

5 06 2008
nejdet

bu arada projem visual basic veri tabanı yapıyorum

23 08 2008
Aslan AKYOL

SELECT PROTOKOL.PROTOKOL_NO, PROTOKOL.CTARIH, ISLEMYAP.*
FROM PROTOKOL INNER JOIN ISLEMYAP on PROTOKOL.PROTOKOL_NO = ISLEMYAP.PROTOKOL_NO
AND PROTOKOL.CTARIH < ISLEMYAP.TARIH
AND PROTOKOL.CTARIH between TO_DATE(‘01.01.2008 00:00′,’dd.mm.yyyy hh24:mi’)
and to_date(‘30.01.2008 23:59′,’dd.mm.yyyy hh24:mi’)

şeklinde bir komutla iki tablodaki bilgileri birleştirerek sorgulayabiliyorum. ama PROTOKOL tablosundaki TARIH bilgilerinin ISLEMYAP tablosundaki CTARIH bilgilerinden en az bir gün büyük olanlarını nasıl listeleyebilirim.

3 09 2008
Adem

Merhabalar,

Access’de Uyelik isimli kullanıcıların Üyelik tarihlerinin bulunduğu alanım var.UyelikTur alanımda ise 1,3,6,12 aylık üyelik türleri var.Kullanıcı hangisini seçmişse ona göre üylik tarihini gizlice arttırıp bugünün tarihi(now olayı galiba) ile karşılaştıracak.1 hafta kalmışsa üyeliğinin bitmesine bana tabloda gösterecek.Bunu nasıl yapabilirim.Yardımlarınızı bekliyorum…

30 12 2008
simon

mySql’de tarih almak icin Current_Date kullanabilirsiniz. Kullanimi :

SELECT `dTarihi` , (DATEDIFF( CURRENT_DATE, `dTarihi` ) /365.25) AS Yas
FROM `Personel`

bu kodu kullanarak. Tek sql ile yasinizi tam olarak alabilirsiniz. Saygilar

4 03 2009
qurbet

datediff fonksiyonunda doğum tarihi ile şimdiki tarih girildiğinde arasındaki tarih farkını bulan proqramı visual basic dilinde yapınız????

4 03 2009
qurbet

nası olcq bu işş

23 05 2009
Adeddeple

hh. strange..

23 05 2009
Sadullah KELEŞ

?

9 10 2009
vi

selam, madem tarih farkları ile ilgili sorular var🙂 bende bir soru sorsam? şimdi bunun cevabı ile uğraşıyorum da🙂

iki tarih arasındaki farkı iş günü olarak nasıl alabilirim?
yani sadece c.tesi ve pazarlar hariç hesaplamam lazım?

yardımcı olursanız sevinirim…

kolay gelsin,

9 10 2009
Sadullah KELEŞ

datepart(weekday,tarihalanın) ile haftanın kaçıncı günü olduğunu alırsın ve bu değer cumartesi veya pazara denk geliyorsa sorgudan çıkarırsın ör: select * from tablon where DatePart(weekday,tarihalanın) not in(6,7)
buradaki 6,7 değerleri serverindeki bölgesel ayarlara göre farklılık gösterebilir bunu aşmak içinde sorgunu bir procedure olarak düzenleyip başlangıçta tarih formatını istediğin herhangi bir formata çevirip sorgunu buna göre düzenleyebilirsin.

9 10 2009
vi

yeniden merhaba Sadullah Bey,
sizin mesajınızdan önce, üstüne biraz çalışınca hallettim🙂
yöntemimiz aşağı yukarı aynı
SP kullanmam mümkün degil. sorgunun içinde bir kolon gibi kullanmam gerekiyor. yeni Fn gibi.
ayrıca sizin bahsettiğiniz sadece iş gününü içeren kayıtları bulmak için, benim istediğim ise a tarihi ile b tarihi arasında kaç iş günü vardır.
datediff içindeki iş günler gibi de anlatabilirim.
yani where bölümünde degil select bölümünde olması gerekecek.

yardımınız için tekrar teşekkür ederim.

bu arada ilgilenirseniz, sitemizi ziyaret etmenizi dilerim.
http://www.dynamicquery.net

vi

9 10 2009
vi

kusura bakmayın, sorguyu eklemeyi unutmuşum.
belki başka arkadaşlara da yardımımız olur.🙂

ve 6 yada 7 nin yeri konusundaki uyarınız için de teşekkür ederim.

———————-
select

ilktar,
sontar,
datediff(dd,ilktar,sontar) as gun_farki,
datediff(dd,ilktar,sontar) – datediff(ww,ilktar,sontar) * 2 + case when datepart(dw,ilktar) 6 then 1 else 0 end as is_gunu_farki

from izin_hareketleri

———————–

lütfen sizde kontrol edin.

saygılarımla,
vi

9 10 2009
Sadullah KELEŞ

çözümü paylaştığın için teşekkür ederim🙂

27 10 2009
Murat

Merhaba, benim vb.net de tarih sorgusu ile ilgili çözemediğim bir konu var, sorgum şu şekilde;

“SELECT * from Kayitlar where
Baslama_Tarih >='” & Format(DateTimePicker1.Value, (“MM.dd.yyyy”)) & “‘
and
Bitis_Tarih <= '" & Format(DateTimePicker2.Value, ("MM.dd.yyyy")) & "' , Baglan)

sorgu güzel şekilde çalışıyor ve iki tarih arasını gösteriyor ama dt2.value değerindeki tarihi dahil etmiyor.
örnek verecek olursam
01.01.2009 – 10.01.2009 arası dediğimde " <= " ifadesi olmasına rağmen 10'una ait kayıtları göstermiyor. 9 una kadar olanları gösteriyor

sql2005 veritabanı

5 01 2010
Serkan

Merhabalar,
MSSql veritabanında tarih eklerken GetDate ile ekliyorum ancak saliseyi 000 olarak ekliyor. Acaba saliseyi de göstermek için ne yapmam gerekiyor, bilginiz var mı

5 01 2010
Serkan

Merhabalar,
MSSql veritabanında tarih eklerken GetDate ile ekliyorum ancak saliseyi 000 olarak ekliyor. Acaba saliseyi de göstermek için ne yapmam gerekiyor.

5 01 2010
Sadullah KELEŞ

normalde getdate salise değerini de getirir. böyle bir problem olmaması gerekir ama belki tarih formatı ile ilgili bir problem vardır diye düşünerek kayıt sırasında getdate ile aldığınız tarih değerini içinde salise bulunan bir formata çevirmeye çalışın ör: convert(datetime, getdate(),109)

26 01 2010
volkan

Merhaba otomatik tarih formatını örnek 01 Ocak 2010 şeklinde o günün tarihi şeklinde nasıl gösterebilirim ? cevabınız için şimdiden teşekkürler….

22 02 2010
Erdal Bilek

merhaba iki tarih arasını listelemek istiyorum yazdığım kodlar aşağıda ama hata veriyor. nerede hata yapmış olabilirim. bilgi verirseniz sevinirim.

tarih1=request(“tarih1”)
tarih2=request(“tarih2”)

t1= FormatDateTime(tarih1)
t2= FormatDateTime(tarih2)

set rs=server.createobject(“adodb.recordset”)
rs.open “ademgider where tarih between ‘”&t1&”‘ and ‘”&t2&”‘” ,db,1,3

if not rs.eof then

24 02 2010
Erdal Bilek

ben problemimi çözdüm. takılan arkadaşlar için yazıyorum.

tarih1=request(“tarih1”)
tarih2=request(“tarih2″)

t1= cdate(tarih1)
t2= cdate(tarih2)

t1=replace(t1,”.”,”/”)
t2=replace(t2,”.”,”/”)

‘Problem yukarıda LCID değeriri 1055(türkiye zaman dilimi) yapmama rağmen yinede . işaretlerini / işaretine dönüştürmek zorunda kaldım
‘Birde veritabanında tarih alanını Kısa tarih olarak seçtim,

set rs=server.createobject(“adodb.recordset”)

sql=”select * from ademgider where tarih BETWEEN #”&t1&”# and #”&t2&”# ORDER BY id DESC”

rs.open Sql ,db,1,3

if not rs.eof then

24 02 2010
Sadullah KELEŞ

bilgilendirme için teşekkür ederim erdal🙂 mutlaka birilerinin işine yarar

26 02 2010
vi

Arkadaşlar merhaba, bende bir sorunumdan bahsedeyim belki yardımcı olursunuz🙂

ADO ile SQL servera bağlanıp
SHAPE-APPEND ile bir parend-child yapısında bir dizi tabloya sorgu gönderiyorum. Append ile eklediğim tablolardaki bazı değerler için sorgunun sonunda SUM,AVG gibi işlemler kullanıp bunların sonuçlarını da CALC ile toplayıp çıkartıyorum.
Sıkıntım şudur; Append ile bağladığım yan tablolarda hiç kayıt olmaması durumunda işlemin sonucu 0 değil NULL geliyor. Ardından da CALC A+B yaptığımda, B null ise sonuç Null oluyor.
SQL in standart NULL setlerini denedim ancak bir sonuç alamadım.
SHAPE
{select id, ad, soyad musteri}
appen
{select odemeID,odeme_tarihi from odemeler}
relate odemeler.musID = id
,
{select malID,satis_tarihi from satislar}
relate satislar.musID = id
compute
count(odemeID) as A,
count(malID) as B,
CALC A+B as C

yukarıda fiki versin diye sizlere bir örnek yazdım.

Eğer satışlar tablosunda hiç kayıt yoksa veya odemelerde A yada B nin NULL olma durumunda A veya B null geliyor ve C null çıkıyor.

Ben en A=5,b=null ise A+B durumunda sonucun 5 çıkmasını istiyorum. Standar SQL sorgularında bunu yapabiliyoruz.

Bu konuda fikir verebilecek yada yardımcı olabilecek arkadaşlarımın cevaplarını bekliyorum.

İyi çalışmalar.
Veysel

Not: MS-SQL 2000 veya 2005 veya 2008 de standart bir DB

26 02 2010
Sadullah KELEŞ

hesabı yaptığın yerde isnull(A,0) gibi birşey kullanabilirsin sanırım

26 02 2010
vi

Selam,
ADO SHAPE sorgusunun o kısmında CALC bölümünde yani kullanamıyoruz. Yani adam izin vermiyor🙂

6 03 2010
blue

bende access de bir proje üzerine çalışıyorum.. bundan sonraki 7 gün içinde doğum günü olanları sıralasın istiyorum yapamadım… yardımcı olursanız sevinirim. iyi günler

6 03 2010
vi

selam,

select
top 10
kisi_no,
kisi_adi
p_dgmtrh ,
convert(char(4),datepart(yy,getdate())) + right(’00’ + convert(varchar,datepart(mm,p_dgmtrh)),2) + right(’00’ + convert(varchar,datepart(dd,p_dgmtrh)),2 )
from kisi_tablosu
where
convert(datetime, convert(char(4),datepart(yy,getdate())) + right(’00’ + convert(varchar,datepart(mm,p_dgmtrh)),2) + right(’00’ + convert(varchar,datepart(dd,p_dgmtrh)),2 )) between getdate() and dateadd(d,7,getdate())

bu arada doğum tarihinin boş gelme durumunu ayrıca içerde kontrol etmen gerek

kolay gelsin.

11 06 2010
Mustafa Hınçal

Sadullah bey ben iki tarih arasındaki gün farkını yıl-ay-gün şeklinde nasıl getirtebilirim.
Mesela: 10.01.1990-11.06.2010 tarihlerindeki gün sayısını kullandığım muhasebe programında
DATEDIFF([Kuruma Giriş Tarihi],[Rapor Tarihi],”d”) fonksiyonu ile getirttim (7457 gün). bu günü internetten hesaplattırdım 20 yıl 5 ay 1 gün e denk geliyor. Bu 20yıl-5ay-1gün ü DATEDIFF fonksiyonu ile nasıl getirtebilirim. Datepart e ne yazmalıyım. İlginiz için şimdiden teşekkürler.

10 08 2010
Toprak

Teşekkürler…

19 05 2011
Ozan

Selam;
Herşey iyi güzelde🙂 benim sorum biraz farklı olacak, şöyle ki;
bugünün tarihinden ve saatinden 1 dakika öncesini veren kodu arıyorum,
datediff(“n”,-1,now())
diyorum ama ortaya acayip bi rakam dizesi çıkıyor, bu konuda yardımcı olursanız sevinirim.

20 05 2011
vi

Merhaba Ozan,
DateDiff iki tarih arasındaki farkı bulmak için kullanılır. senin istediğin ise, elindeki bir tarihten 1 dakika öncesine gitmek. DateDiff yerine DateAdd kullanmalısın.
DateAdd(mi,-1,getdate())
dönecek olan değer şu andan -1 dakika olacaktır.
Kolay gelsin,
Veysel

18 06 2011
Metin

Merhabalar,

Bugün ile bu ayın sonu arasındaki gün sayısını (veya 3 sonraki ayın ile o ay sonun arasındaki gün farkını) nasıl bulabilirim yardımcı olurmusunuz.

26 05 2012
emre

slm. visual basic bir prg.yapmaya çalışıyorum .çekin ortalama vadesi alacağım
iki adet textbox var birine çekin vadesini giriyorum diğer textbox da bugünden itibaren gün olarak vadesini yazıyor fakat çekin vadesi boş bırakılırsa vade kısmına “0” yazmasını istiyorumyardımcı olabilirseniz sevinirim

29 06 2012
metinsen911

merhaba arkadaşlar benim sorum belki size basit gelicek ama bir tarihe ay eklemem gerekiyor örnek 01.01.2010 + 13 ay = 01.02.2011 bu formülü raporlarda hesaplatıcam “datediff” mi kullanmam gerekiyor.

23 10 2012
zekeriya

benım tarihle ılgılı bı sorum olacaktı axses 2007 de dogum gunu sorgusu yapmam lazım gun ve ay aynı ıse goster seklınde dogum gunu yapmam lazım raporlarda gosterecem sorguya yazmam gerekeren komudu soylermısınız

4 10 2013
HilalAkyıldız

Peki sql de iki tarih arasında kaç tane pazartesi veya salı günü var nasıl bulabiliriz?

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s




%d blogcu bunu beğendi: