Forum
Merhaba arkadaşlar.
Tablomda bulunan verileri bir programa sql sorgusuyla çekiyorum. İsteğim SatisTarihi alanındaki tarih içinde bulunduğumuz aydan önceki ayalara aitse programda gözükmesin istiyorum.
Nasıl yapmam gerekiyor?
Merhaba arkadaşlar.
Tablomda bulunan verileri bir programa sql sorgusuyla çekiyorum. İsteğim SatisTarihi alanındaki tarih içinde bulunduğumuz aydan önceki ayalara aitse programda gözükmesin istiyorum.
Nasıl yapmam gerekiyor?
Senin için sql kodlarını yazdım.Test yaptm güzel çalışıyor ben between koşuluyla tarih arattırdım. (Test SQL 2008 R2)
/* Tablomuzu oluşturalım */
Create table satis (
sts_id int identity(1,1) primary key,
sts_tarih datetime,
sts_isim varchar(100)
)
Go
/* Tablomuzu oluşturalım */
DECLARE @Counter Int
SET @Counter = 0
DECLARE @DateTime Datetime
SET @DateTime = GETDATE()
WHILE @Counter < 1000
BEGIN
INSERT INTO satis (sts_tarih,sts_isim) SELECT @DateTime-@Counter,'Ürün '+CONVERT(varchar(10),@Counter)
SET @Counter = @Counter + 1
END
Go
/* Tabloda bulundugumuz ayın birinden, bugüne kadar olan satışlar */
Select * from satis Where sts_tarih between CONVERT(date,GETDATE()-day(getdate())+1,105) AND CONVERT(date,getdate(),105)
Go
/* Tablomuzu silelim */
Drop table satis
Go
SQL Sorgunuzun WHERE kısmından sonrasına Month(
SatisTarihi ) = Month(CurrentDate_TimeStamp) şeklindede ekleme yaparak yapabilirsiniz.
Örnek ;
SELECT * FROM table WHERE Month( SatisTarihi ) = Month(CurrentDate_TimeStamp)
İyi çalışmalar.
Kenan bey,
Bunu bende düşünmüştüm ama satış kayıtlarında birden fazla yıl varsa bu sefer kayıtlardaki yüm yılların içinde o aylarıda alıyor. Bundan dolayı sorguda çıkan sonuç hatalı olur.
Select * from satis where MONTH(sts_tarih) = MONTH(GETDATE())
sonuç: 354 nolu id den sonraki kayıtlar 2011 ve 2010 yıllarına ait.
sts_id sts_tarih sts_isim
1 2012-06-17 00:51:09.977 Ürün 0
2 2012-06-16 00:51:09.977 Ürün 1
3 2012-06-15 00:51:09.977 Ürün 2
4 2012-06-14 00:51:09.977 Ürün 3
5 2012-06-13 00:51:09.977 Ürün 4
6 2012-06-12 00:51:09.977 Ürün 5
7 2012-06-11 00:51:09.977 Ürün 6
8 2012-06-10 00:51:09.977 Ürün 7
9 2012-06-09 00:51:09.977 Ürün 8
10 2012-06-08 00:51:09.977 Ürün 9
11 2012-06-07 00:51:09.977 Ürün 10
12 2012-06-06 00:51:09.977 Ürün 11
13 2012-06-05 00:51:09.977 Ürün 12
14 2012-06-04 00:51:09.977 Ürün 13
15 2012-06-03 00:51:09.977 Ürün 14
16 2012-06-02 00:51:09.977 Ürün 15
17 2012-06-01 00:51:09.977 Ürün 16
354 2011-06-30 00:51:09.977 Ürün 353
355 2011-06-29 00:51:09.977 Ürün 354
356 2011-06-28 00:51:09.977 Ürün 355
357 2011-06-27 00:51:09.977 Ürün 356
358 2011-06-26 00:51:09.977 Ürün 357
359 2011-06-25 00:51:09.977 Ürün 358
360 2011-06-24 00:51:09.977 Ürün 359
361 2011-06-23 00:51:09.977 Ürün 360
362 2011-06-22 00:51:09.977 Ürün 361
363 2011-06-21 00:51:09.977 Ürün 362
364 2011-06-20 00:51:09.977 Ürün 363
365 2011-06-19 00:51:09.977 Ürün 364
366 2011-06-18 00:51:09.977 Ürün 365
367 2011-06-17 00:51:09.977 Ürün 366
368 2011-06-16 00:51:09.977 Ürün 367
369 2011-06-15 00:51:09.977 Ürün 368
370 2011-06-14 00:51:09.977 Ürün 369
371 2011-06-13 00:51:09.977 Ürün 370
372 2011-06-12 00:51:09.977 Ürün 371
373 2011-06-11 00:51:09.977 Ürün 372
374 2011-06-10 00:51:09.977 Ürün 373
375 2011-06-09 00:51:09.977 Ürün 374
376 2011-06-08 00:51:09.977 Ürün 375
377 2011-06-07 00:51:09.977 Ürün 376
378 2011-06-06 00:51:09.977 Ürün 377
379 2011-06-05 00:51:09.977 Ürün 378
380 2011-06-04 00:51:09.977 Ürün 379
381 2011-06-03 00:51:09.977 Ürün 380
382 2011-06-02 00:51:09.977 Ürün 381
383 2011-06-01 00:51:09.977 Ürün 382
719 2010-06-30 00:51:09.977 Ürün 718
720 2010-06-29 00:51:09.977 Ürün 719
721 2010-06-28 00:51:09.977 Ürün 720
722 2010-06-27 00:51:09.977 Ürün 721
723 2010-06-26 00:51:09.977 Ürün 722
724 2010-06-25 00:51:09.977 Ürün 723
725 2010-06-24 00:51:09.977 Ürün 724
726 2010-06-23 00:51:09.977 Ürün 725
727 2010-06-22 00:51:09.977 Ürün 726
728 2010-06-21 00:51:09.977 Ürün 727
729 2010-06-20 00:51:09.977 Ürün 728
730 2010-06-19 00:51:09.977 Ürün 729
731 2010-06-18 00:51:09.977 Ürün 730
732 2010-06-17 00:51:09.977 Ürün 731
733 2010-06-16 00:51:09.977 Ürün 732
734 2010-06-15 00:51:09.977 Ürün 733
735 2010-06-14 00:51:09.977 Ürün 734
736 2010-06-13 00:51:09.977 Ürün 735
737 2010-06-12 00:51:09.977 Ürün 736
738 2010-06-11 00:51:09.977 Ürün 737
739 2010-06-10 00:51:09.977 Ürün 738
740 2010-06-09 00:51:09.977 Ürün 739
741 2010-06-08 00:51:09.977 Ürün 740
742 2010-06-07 00:51:09.977 Ürün 741
743 2010-06-06 00:51:09.977 Ürün 742
744 2010-06-05 00:51:09.977 Ürün 743
745 2010-06-04 00:51:09.977 Ürün 744
746 2010-06-03 00:51:09.977 Ürün 745
747 2010-06-02 00:51:09.977 Ürün 746
748 2010-06-01 00:51:09.977 Ürün 747
O halde yıllarıda dahil edin sql sorgusuna sonuçta datanızın nasıl bir data olduğunu bilmediğim için o halde aşağıda tekrar bir örnek vereyim
Select * from satis where MONTH(sts_tarih) = MONTH(GETDATE()) AND YEAR(sts_tarih) = YEAR(CURRENT_TIMESTAMP)
gibi olacaktır yani bu yılın bu ayına ait olan dataları alacaksınız.
O halde yıllarıda dahil edin sql sorgusuna sonuçta datanızın nasıl bir data olduğunu bilmediğim için o halde aşağıda tekrar bir örnek vereyim
Select * from satis where MONTH(sts_tarih) = MONTH(GETDATE()) AND YEAR(sts_tarih) = YEAR(CURRENT_TIMESTAMP)
gibi olacaktır yani bu yılın bu ayına ait olan dataları alacaksınız.
Sizin sorgunuz çok daha basitmiş, niye benim aklıma gelmedi acaba böyle birşey. Sanırım zoru sevdiğim için bazen dolandırıyorum işleri böyle 🙂 Teşekkür ederim.
Önemli değil SQL konusu ile ilgili yardımcı olabileceğim şeyler olursa paylaşırım. Bu gibi konularda tartışalım güzel örnekler çıkabilir sonuçta herkezin mantığı farklıdır bende sizin sorgunuzdan feyz alabilirim farklı konularda. ÇözümPark olarak burada paylaşım yapmaktanda ayrıca zevk almaktayım.
Tekrardan İyi çalışmalar. ALLAH zihin açıklığı vere herkese
Güzel soru ve güzel soruya Kenan kardeşimden güzel cevap soran ve cevap verenler böyle güzel olunca çok keyifli paylaşımlar oluyor 🙂