Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
MSSQL de Tarih Saat kriteri Arama
#1
herkese merhabalar öncelikle, 

Sadece ben mi bu tarz bir problem yaşıyorum merak ediyorum , 

Ben tarih alanlarını genelde tarih olarak giriyorum (Saat kısmını kullanmıyorum) , ama bazen saatlere göre de rapor almak gerektiğinden ayrıca saati de integer a çevirip tutuyorum
Mesela (12.45 -> 1245 ) veya (09:25-925) gibi dolayısla ararken bunu da tarihin sonuna ekliyerek arıyorum fakat uzun aralıklı raporlarda SQl Cümlesi oluşturmak sorun olabiliyor.

Öğrenmek istediğim Tarih ve saat alanı olarak sakladığım bir alanda between ile aramam yaparken mesela

Tarih : 20-12-2018 / 16:00  den  22-12-2018 /12:00 ye kadar olan aralığın raporunu almak için between kullanmak istiyorum ama nasıl yazdıysam kabul etmiyor. Yardımcı olabilir misiniz?
Cevapla
#2
Şöyle;

SELECT * FROM dbo.SENINTABLON WHERE TarihAlani BETWEEN '2018-03-03 18:00:00.000' AND '2018-03-03 23:59:59.999'

Tarih verisini yazarken "yıl - ay - gün saat : dakika : saniye . milisaniye" sıralamasına uyman gerekir. saniye ve milisaniyeyi belirtmek zorunda da değilsin.
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
WWW
Cevapla
#3
Hocam Cevap için teşekkür ediyorum. bende böyle yazdım diye düşünüyordum ama araya başka bişi yazmışım şimdi siz yazınca farkettim.
Kusura bakmayın. Tekrar teşekkürler.
Cevapla
#4
(02-01-2019, Saat: 16:29)Bay_Y Adlı Kullanıcıdan Alıntı: herkese merhabalar öncelikle, 

Sadece ben mi bu tarz bir problem yaşıyorum merak ediyorum , 

Ben tarih alanlarını genelde tarih olarak giriyorum (Saat kısmını kullanmıyorum) , ama bazen saatlere göre de rapor almak gerektiğinden ayrıca saati de integer a çevirip tutuyorum
Mesela (12.45 -> 1245 ) veya (09:25-925) gibi dolayısla ararken bunu da tarihin sonuna ekliyerek arıyorum fakat uzun aralıklı raporlarda SQl Cümlesi oluşturmak sorun olabiliyor.

Öğrenmek istediğim Tarih ve saat alanı olarak sakladığım bir alanda between ile aramam yaparken mesela

Tarih : 20-12-2018 / 16:00  den  22-12-2018 /12:00 ye kadar olan aralığın raporunu almak için between kullanmak istiyorum ama nasıl yazdıysam kabul etmiyor. Yardımcı olabilir misiniz?

Bu yazımda tarih ve saat formatlarından bahsetmiştim. Umarım yararlı olur.
http://www.delphican.com/showthread.php?...50#pid5750
WWW
Cevapla
#5
(02-01-2019, Saat: 16:59)csunguray Adlı Kullanıcıdan Alıntı:
(02-01-2019, Saat: 16:29)Bay_Y Adlı Kullanıcıdan Alıntı: herkese merhabalar öncelikle, 

Sadece ben mi bu tarz bir problem yaşıyorum merak ediyorum , 

Ben tarih alanlarını genelde tarih olarak giriyorum (Saat kısmını kullanmıyorum) , ama bazen saatlere göre de rapor almak gerektiğinden ayrıca saati de integer a çevirip tutuyorum
Mesela (12.45 -> 1245 ) veya (09:25-925) gibi dolayısla ararken bunu da tarihin sonuna ekliyerek arıyorum fakat uzun aralıklı raporlarda SQl Cümlesi oluşturmak sorun olabiliyor.

Öğrenmek istediğim Tarih ve saat alanı olarak sakladığım bir alanda between ile aramam yaparken mesela

Tarih : 20-12-2018 / 16:00  den  22-12-2018 /12:00 ye kadar olan aralığın raporunu almak için between kullanmak istiyorum ama nasıl yazdıysam kabul etmiyor. Yardımcı olabilir misiniz?

Bu yazımda tarih ve saat formatlarından bahsetmiştim. Umarım yararlı olur.
http://www.delphican.com/showthread.php?...50#pid5750

Çok teşekkür ederim Faydası olmaz olur mu çok sağolun.
Cevapla
#6
merhaba saat ve dakika  alanlarını ınteger ıle ayrı tutup sorgular olusturmak zahmetli ve ek kontroller gerektırır.(saat 0-23 arası, dakıka 0-59 arası ıcın check constrait yazılmalı vs..).
Benim en pratik önerim bir tane smalldatetime turunde alan olusturulur, ihtiyac olunan tum zaman turlerı bu alandan hesaplanmıs sutun olarak turetılir.
su seklde;

CREATE TABLE dbo.tablo1 (
UzunTarih smalldatetime NULL,
KisaTarih AS CONVERT([date],[UzunTarih]) PERSISTED,
Saat AS CONVERT([time],[uzuntarih]),
xHour AS datepart(hour,[uzuntarih]),
xminute AS datepart(minute,[uzuntarih]),
xsecond AS datepart(second,[uzuntarih])
)
ON [PRIMARY]
GO

Saat kısmını kullanmadıgınızda sorgunuzda "KisaTarih" alanını kullanabılırısınız. 
PERSISTED edip uzerınde index tanımlarsanız sorguda performans sorunu yasmazsınız
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Lightbulb Mssql ve MS Server Upgrade'i arikeness 1 819 01-08-2025, Saat: 11:22
Son Yorum: maxpaynen
  String içinde karakter arama barissagir 3 1.948 07-02-2024, Saat: 17:57
Son Yorum: RAD Coder
  MS SQL Server - Arama Yaklaşık Değerleri Bulma hi_selamlar 5 2.640 17-01-2024, Saat: 22:53
Son Yorum: Mr.X
  MSSQL Data downgrade (Alt sürüme veri aktarma) işlemleri adelphiforumz 0 1.218 23-03-2023, Saat: 11:13
Son Yorum: adelphiforumz
  MS SQL server tarih formatı değiştirme MEK 15 10.400 13-09-2022, Saat: 23:19
Son Yorum: MEK



Konuyu Okuyanlar: 1 Ziyaretçi