{"id":31158,"date":"2025-10-06T13:31:59","date_gmt":"2025-10-06T10:31:59","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/"},"modified":"2025-10-06T13:31:59","modified_gmt":"2025-10-06T10:31:59","slug":"sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/","title":{"rendered":"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber"},"content":{"rendered":"<p><body><\/p>\n<p>Veritaban\u0131 sorgular\u0131nda s\u0131k\u00e7a kullan\u0131lan bir operat\u00f6r olan <code>SQL BETWEEN<\/code>, genellikle ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferlerini i\u00e7eren bir aral\u0131k belirtmek i\u00e7in kullan\u0131l\u0131r. Ancak bir\u00e7ok geli\u015ftiricinin akl\u0131n\u0131 kurcalayan temel soru \u015fudur: Bu aral\u0131k kapsay\u0131c\u0131 (inclusive) m\u0131, yoksa d\u0131\u015flay\u0131c\u0131 (exclusive) m\u0131 \u00e7al\u0131\u015f\u0131r? Bu kapsaml\u0131 rehberde, <code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn inceliklerini derinlemesine ele alacak, ger\u00e7ek d\u00fcnya senaryolar\u0131yla peki\u015ftirecek ve s\u0131k\u00e7a yap\u0131lan hatalar\u0131n \u00f6n\u00fcne nas\u0131l ge\u00e7ilece\u011fini ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.<\/p>\n<p><code>SQL BETWEEN<\/code> operat\u00f6r\u00fc, belirli bir aral\u0131k dahilindeki de\u011ferleri se\u00e7mek i\u00e7in <code>WHERE<\/code> yan t\u00fcmcesi ile birlikte kullan\u0131lan mant\u0131ksal bir operat\u00f6rd\u00fcr. Bu operat\u00f6r, bir s\u00fctunun de\u011ferinin iki belirtilen de\u011fer aras\u0131nda olup olmad\u0131\u011f\u0131n\u0131 kontrol etmemizi sa\u011flar. Basit ve anla\u015f\u0131l\u0131r s\u00f6zdizimi sayesinde, karma\u015f\u0131k ko\u015fullar\u0131 daha okunabilir bir \u015fekilde ifade etmenin harika bir yoludur. Genellikle say\u0131sal, metinsel veya tarih\/saat verileriyle birlikte kullan\u0131l\u0131r ve veri filtreleme i\u015flemlerinde merkezi bir rol oynar.<\/p>\n<p>S\u00f6zdizimi olduk\u00e7a basittir:<\/p>\n<pre><code>\nSELECT column_name(s)\nFROM table_name\nWHERE column_name BETWEEN value1 AND value2;\n<\/pre>\n<p><\/code><\/p>\n<p>Burada <code>column_name<\/code>, sorgulamak istedi\u011finiz s\u00fctunu, <code>table_name<\/code> ise verilerin bulundu\u011fu tabloyu temsil eder. <code>value1<\/code> aral\u0131\u011f\u0131n ba\u015flang\u0131\u00e7 de\u011ferini, <code>value2<\/code> ise biti\u015f de\u011ferini ifade eder. Bu yap\u0131n\u0131n sadeli\u011fi, \u00f6zellikle birden fazla ko\u015ful i\u00e7eren sorgular yazarken geli\u015ftiricilere b\u00fcy\u00fck kolayl\u0131k sa\u011flar. \u00d6rne\u011fin, belirli bir fiyat aral\u0131\u011f\u0131ndaki \u00fcr\u00fcnleri listelemek, belirli bir tarih aral\u0131\u011f\u0131ndaki sipari\u015fleri bulmak veya alfabetik olarak belirli bir harf aral\u0131\u011f\u0131ndaki isimleri se\u00e7mek gibi senaryolarda <code>BETWEEN<\/code> operat\u00f6r\u00fc kurtar\u0131c\u0131 olabilir. Operat\u00f6r\u00fcn g\u00fcc\u00fc, bu t\u00fcr aral\u0131k tabanl\u0131 filtrelemeyi tek bir sat\u0131rda, a\u00e7\u0131k\u00e7a ifade edebilme yetene\u011finde yatar. Bu, hem sorgular\u0131n daha anla\u015f\u0131l\u0131r olmas\u0131n\u0131 sa\u011flar hem de hata yapma olas\u0131l\u0131\u011f\u0131n\u0131 azalt\u0131r.<\/p>\n<h3>BETWEEN Operat\u00f6r\u00fcn\u00fcn Temel Mant\u0131\u011f\u0131: Say\u0131larla Bir Ba\u015flang\u0131\u00e7<\/h3>\n<p><code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn temel mant\u0131\u011f\u0131n\u0131 anlaman\u0131n en kolay yolu, say\u0131sal de\u011ferler \u00fczerinden gitmektir. Varsay\u0131lan olarak, SQL'deki <code>BETWEEN<\/code> operat\u00f6r\u00fc <strong>kapsay\u0131c\u0131d\u0131r (inclusive)<\/strong>. Bu ne anlama geliyor? \u015eunu demek oluyor: Belirtti\u011finiz ba\u015flang\u0131\u00e7 de\u011feri (<code>value1<\/code>) ve biti\u015f de\u011feri (<code>value2<\/code>) de aral\u0131\u011fa dahildir. Yani, e\u011fer bir sorguda <code>BETWEEN 10 AND 20<\/code> derseniz, sonu\u00e7 k\u00fcmenize 10 ve 20 de\u011ferleri de dahil edilecektir. Bu durum, di\u011fer baz\u0131 programlama dillerindeki \"aral\u0131k\" tan\u0131mlar\u0131ndan farkl\u0131 olabilece\u011fi i\u00e7in bazen kafa kar\u0131\u015f\u0131kl\u0131\u011f\u0131na yol a\u00e7abilir, ancak SQL standard\u0131nda bu net bir \u015fekilde tan\u0131mlanm\u0131\u015ft\u0131r.<\/p>\n<p>Bu kapsay\u0131c\u0131l\u0131\u011f\u0131 daha iyi anlamak i\u00e7in basit bir \u00f6rnek \u00fczerinden ilerleyelim. Diyelim ki bir <code>Urunler<\/code> tablonuz var ve bu tabloda \u00fcr\u00fcnlerin fiyat bilgileri yer al\u0131yor. Siz 100 TL ile 200 TL aras\u0131ndaki \u00fcr\u00fcnleri listelemek istiyorsunuz:<\/p>\n<pre><code>\nSELECT UrunAdi, Fiyat\nFROM Urunler\nWHERE Fiyat BETWEEN 100 AND 200;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorguyu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Fiyat s\u00fctununda tam olarak 100 TL olan \u00fcr\u00fcnler ve tam olarak 200 TL olan \u00fcr\u00fcnler de sonu\u00e7 k\u00fcmenize dahil edilecektir. Yani, 100, 101, ..., 199, 200 gibi t\u00fcm de\u011ferler bu aral\u0131\u011fa girer. E\u011fer 99.99 TL'lik bir \u00fcr\u00fcn veya 200.01 TL'lik bir \u00fcr\u00fcn olsayd\u0131, onlar bu sorgunun sonu\u00e7 k\u00fcmesine dahil edilmezdi. Bu kapsay\u0131c\u0131l\u0131k, genellikle finansal raporlama, stok y\u00f6netimi veya ya\u015f aral\u0131\u011f\u0131 filtrelemesi gibi senaryolarda tam da istenen davran\u0131\u015ft\u0131r ve geli\u015ftiricilere g\u00fcvenilir sonu\u00e7lar sunar. Bu temel mant\u0131\u011f\u0131 kavrad\u0131\u011f\u0131n\u0131zda, <code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fc daha bilin\u00e7li ve hatas\u0131z kullanmaya ba\u015flayacaks\u0131n\u0131z.<\/p>\n<h2>SQL BETWEEN Ger\u00e7ekten Kapsay\u0131c\u0131 m\u0131? Kan\u0131tlar ve \u00d6rnekler<\/h2>\n<p>Yukar\u0131da bahsetti\u011fimiz gibi, SQL'deki <code>BETWEEN<\/code> operat\u00f6r\u00fc kesinlikle kapsay\u0131c\u0131d\u0131r. Bu, standart SQL tan\u0131m\u0131n\u0131n bir par\u00e7as\u0131d\u0131r ve \u00e7o\u011fu veritaban\u0131 y\u00f6netim sistemi (DBMS) taraf\u0131ndan bu \u015fekilde uygulan\u0131r. Yani, <code>WHERE A BETWEEN B AND C<\/code> ifadesi, asl\u0131nda <code>WHERE A >= B AND A <= C<\/code> ifadesinin k\u0131salt\u0131lm\u0131\u015f ve daha okunakl\u0131 bir versiyonudur. Bu kesin bilgi, \u00f6zellikle karma\u015f\u0131k sorgular olu\u015ftururken veya hata ay\u0131klarken size b\u00fcy\u00fck bir g\u00fcven sa\u011flayacakt\u0131r. \u015eimdi, bu kapsay\u0131c\u0131l\u0131\u011f\u0131 farkl\u0131 veri t\u00fcrleri \u00fczerinde, somut \u00f6rneklerle daha da peki\u015ftirelim ve \u00e7e\u015fitli senaryolarda nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6relim. Bu sayede, <code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn davran\u0131\u015flar\u0131 konusunda hi\u00e7bir \u015f\u00fcpheniz kalmayacak ve veritaban\u0131 sorgular\u0131n\u0131zda bu operat\u00f6r\u00fc daha etkili bir \u015fekilde kullanabileceksiniz.<\/p>\n<h3>Say\u0131sal De\u011ferlerle Kapsay\u0131c\u0131l\u0131\u011f\u0131n \u0130ncelenmesi<\/h3>\n<p>Say\u0131sal de\u011ferler, <code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn kapsay\u0131c\u0131l\u0131\u011f\u0131n\u0131 en net g\u00f6steren veri t\u00fcr\u00fcd\u00fcr. Bir \u00f6nceki b\u00f6l\u00fcmde verdi\u011fimiz \u00f6rnekler, bu durumu k\u0131smen a\u00e7\u0131klasa da, farkl\u0131 senaryolarla konuyu daha derinlemesine inceleyebiliriz. \u00d6rne\u011fin, bir \u00f6\u011frenci tablonuz oldu\u011funu ve \u00f6\u011frencilerin s\u0131nav puanlar\u0131n\u0131 tuttu\u011funu varsayal\u0131m. 70 ile 90 aras\u0131nda puan alan \u00f6\u011frencileri bulmak istiyorsunuz. Bu durumda, 70 puan alan ve 90 puan alan \u00f6\u011frenciler de dahil olmak \u00fczere, bu aral\u0131ktaki t\u00fcm \u00f6\u011frenciler listelenecektir.<\/p>\n<pre><code>\n-- Bir \u00f6rnek \u00d6\u011frenci tablosu olu\u015ftural\u0131m\nCREATE TABLE Ogrenciler (\n    OgrenciID INT PRIMARY KEY,\n    Ad NVARCHAR(50),\n    Puan INT\n);\n\n-- \u00d6rnek veriler ekleyelim\nINSERT INTO Ogrenciler (OgrenciID, Ad, Puan) VALUES\n(1, 'Ay\u015fe', 65),\n(2, 'Burak', 70),\n(3, 'Cem', 75),\n(4, 'Deniz', 80),\n(5, 'Elif', 90),\n(6, 'Furkan', 92);\n\n-- 70 ile 90 puan aras\u0131ndaki \u00f6\u011frencileri sorgulayal\u0131m\nSELECT Ad, Puan\nFROM Ogrenciler\nWHERE Puan BETWEEN 70 AND 90;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgunun \u00e7\u0131kt\u0131s\u0131 \u015fu \u015fekilde olacakt\u0131r:<\/p>\n<pre><code>\nAd     Puan\n------ ----\nBurak  70\nCem    75\nDeniz  80\nElif   90\n<\/pre>\n<p><\/code><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, ba\u015flang\u0131\u00e7 de\u011feri olan 70 ve biti\u015f de\u011feri olan 90 puanlar\u0131 da sonu\u00e7 k\u00fcmesine dahil edilmi\u015ftir. Bu, <code>BETWEEN<\/code>'in say\u0131sal de\u011ferler i\u00e7in kesinlikle kapsay\u0131c\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131n a\u00e7\u0131k bir kan\u0131t\u0131d\u0131r. E\u011fer 70 puan alan Burak veya 90 puan alan Elif'i listede g\u00f6rmek istemeseydik, o zaman <code>BETWEEN<\/code> yerine <code>Puan > 70 AND Puan < 90<\/code> gibi daha d\u0131\u015flay\u0131c\u0131 ko\u015fullar kullanmam\u0131z gerekirdi. Ancak <code>BETWEEN<\/code>'in amac\u0131, aral\u0131\u011f\u0131n her iki ucunu da dahil etmektir. Bu nedenle, say\u0131sal veri filtrelemesinde, aral\u0131\u011f\u0131n u\u00e7 noktalar\u0131n\u0131 da kapsamas\u0131 gereken durumlarda <code>BETWEEN<\/code> m\u00fckemmel bir se\u00e7enektir.<\/p>\n<h3>Tarih ve Saat Verilerinde BETWEEN Kullan\u0131m\u0131 Nas\u0131l Olur?<\/h3>\n<p><code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn en yayg\u0131n ve bazen en kafa kar\u0131\u015ft\u0131r\u0131c\u0131 kullan\u0131mlar\u0131ndan biri tarih ve saat verileri \u00fczerinedir. Say\u0131sal de\u011ferlerdeki kapsay\u0131c\u0131l\u0131k burada da ge\u00e7erlidir, ancak tarih ve saat verilerinin hassasiyeti (g\u00fcn, saat, dakika, saniye, milisaniye) nedeniyle baz\u0131 incelikler ortaya \u00e7\u0131kar. \u00d6zellikle SQL Server'daki <code>DATETIME<\/code> veya MySQL'deki <code>DATETIME<\/code>\/<code>TIMESTAMP<\/code> gibi veri tipleri milisaniye hassasiyetine sahip olabilir ve bu durum sorgular\u0131n\u0131zda beklenmedik sonu\u00e7lara yol a\u00e7abilir.<\/p>\n<p>\u00d6rnek olarak, bir sipari\u015f tablonuz oldu\u011funu ve belirli bir ay i\u00e7indeki t\u00fcm sipari\u015fleri listelemek istedi\u011finizi d\u00fc\u015f\u00fcnelim:<\/p>\n<pre><code>\n-- Bir \u00f6rnek Siparisler tablosu olu\u015ftural\u0131m\nCREATE TABLE Siparisler (\n    SiparisID INT PRIMARY KEY,\n    MusteriAdi NVARCHAR(50),\n    SiparisTarihi DATETIME,\n    Tutar DECIMAL(10, 2)\n);\n\n-- \u00d6rnek veriler ekleyelim\nINSERT INTO Siparisler (SiparisID, MusteriAdi, SiparisTarihi, Tutar) VALUES\n(1, 'Ali', '2023-01-01 10:00:00', 150.00),\n(2, 'Veli', '2023-01-15 14:30:00', 250.50),\n(3, 'Ay\u015fe', '2023-01-31 23:59:59', 300.00),\n(4, 'Fatma', '2023-02-01 09:00:00', 100.00),\n(5, 'Mehmet', '2023-01-31 12:00:00', 500.00);\n\n-- Ocak 2023'teki sipari\u015fleri sorgulayal\u0131m\nSELECT MusteriAdi, SiparisTarihi, Tutar\nFROM Siparisler\nWHERE SiparisTarihi BETWEEN '2023-01-01 00:00:00' AND '2023-01-31 23:59:59';\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, Ocak ay\u0131n\u0131n ilk saniyesinden son saniyesine kadar olan t\u00fcm sipari\u015fleri kapsayacakt\u0131r. Yani, <code>'2023-01-01 00:00:00'<\/code> ve <code>'2023-01-31 23:59:59'<\/code> anlar\u0131nda verilen sipari\u015fler de dahil olmak \u00fczere t\u00fcm de\u011ferler listelenir. Ancak burada dikkat edilmesi gereken kritik bir nokta vard\u0131r: E\u011fer <code>value2<\/code> olarak sadece <code>'2023-01-31'<\/code> yazsayd\u0131n\u0131z (yani zaman bile\u015fenini belirtmeseydiniz), veritaban\u0131 varsay\u0131lan olarak <code>'2023-01-31 00:00:00'<\/code> olarak kabul edebilirdi. Bu durumda, Ocak ay\u0131n\u0131n 31'i sabah 00:00:00'dan sonraki hi\u00e7bir sipari\u015f listeye dahil edilmeyecekti.<\/p>\n<pre><code>\n-- Hatal\u0131 olabilecek bir tarih sorgusu \u00f6rne\u011fi (zaman bile\u015feni belirtilmezse)\nSELECT MusteriAdi, SiparisTarihi, Tutar\nFROM Siparisler\nWHERE SiparisTarihi BETWEEN '2023-01-01' AND '2023-01-31'; -- Bu, '2023-01-31 00:00:00' olarak yorumlanabilir!\n<\/pre>\n<p><\/code><\/p>\n<p>Bu hatadan ka\u00e7\u0131nmak i\u00e7in iki yayg\u0131n yakla\u015f\u0131m vard\u0131r:<\/p>\n<ol>\n<li>Biti\u015f tarihinin son saniyesini belirtmek (yukar\u0131daki <code>'2023-01-31 23:59:59'<\/code> \u00f6rne\u011findeki gibi).<\/li>\n<li><code>BETWEEN<\/code> yerine <code>>=<\/code> ve <code><<\/code> operat\u00f6rlerini kullanmak. Bu yakla\u015f\u0131m, biti\u015f tarihinden bir sonraki g\u00fcn\u00fcn ba\u015flang\u0131c\u0131n\u0131 hedefleyerek daha g\u00fcvenli bir kapsama alan\u0131 sa\u011flar.<\/li>\n<\/ol>\n<pre><code>\n-- Tarih aral\u0131klar\u0131nda daha g\u00fcvenli bir yakla\u015f\u0131m\nSELECT MusteriAdi, SiparisTarihi, Tutar\nFROM Siparisler\nWHERE SiparisTarihi >= '2023-01-01' AND SiparisTarihi < '2023-02-01';\n<\/pre>\n<p><\/code><\/p>\n<p>Bu ikinci yakla\u015f\u0131m, genellikle tarih aral\u0131\u011f\u0131 sorgular\u0131nda daha az hataya yol a\u00e7t\u0131\u011f\u0131 i\u00e7in tercih edilir. \u00c7\u00fcnk\u00fc biti\u015f tarihinin t\u00fcm g\u00fcn\u00fcn\u00fc kesin olarak kapsar, milisaniye hassasiyetindeki olas\u0131 ka\u00e7\u0131rmalar\u0131 engeller. Yani, <code>BETWEEN<\/code> ile tarih sorgusu yaparken, zaman bile\u015fenlerinin ne anlama geldi\u011fini ve nas\u0131l yorumland\u0131\u011f\u0131n\u0131 iyi anlamak hayati \u00f6neme sahiptir. Aksi takdirde, g\u00f6zden ka\u00e7an verilerle kar\u015f\u0131la\u015fabilirsiniz.<\/p>\n<blockquote><p>\n  Uzman \u0130pucu: Tarih aral\u0131klar\u0131nda veri kayb\u0131n\u0131 \u00f6nlemek i\u00e7in, <code>BETWEEN 'ba\u015flang\u0131\u00e7 tarihi' AND 'biti\u015f tarihi 23:59:59.999...'<\/code> format\u0131n\u0131 kullanmak yerine, <code>TarihKolonu >= 'ba\u015flang\u0131\u00e7 tarihi' AND TarihKolonu < 'biti\u015f tarihinin bir sonraki g\u00fcn\u00fc'<\/code> format\u0131n\u0131 tercih etmek daha g\u00fcvenlidir. Bu yakla\u015f\u0131m, veritaban\u0131n\u0131n zaman hassasiyetinden kaynaklanabilecek hatalar\u0131 elimine eder.\n<\/p><\/blockquote>\n<h3>Metinsel De\u011ferlerle BETWEEN Kullan\u0131m\u0131n\u0131n Farkl\u0131l\u0131klar\u0131<\/h3>\n<p><code>BETWEEN<\/code> operat\u00f6r\u00fc, say\u0131sal ve tarihsel verilerin yan\u0131 s\u0131ra metinsel (string) de\u011ferlerle de kullan\u0131labilir. Metinsel de\u011ferlerdeki kapsay\u0131c\u0131l\u0131k mant\u0131\u011f\u0131, harflerin alfabetik s\u0131ralamas\u0131na dayan\u0131r. Yani, <code>value1<\/code> ve <code>value2<\/code> aras\u0131ndaki alfabetik s\u0131rada yer alan t\u00fcm de\u011ferler (<code>value1<\/code> ve <code>value2<\/code> dahil) sonu\u00e7 k\u00fcmesine dahil edilir.<\/p>\n<p>\u00d6rnek olarak, bir <code>Musteriler<\/code> tablosunda, ad\u0131 'C' harfi ile 'F' harfi aras\u0131nda (dahil) olan m\u00fc\u015fterileri sorgulamak isteyelim:<\/p>\n<pre><code>\n-- Bir \u00f6rnek Musteriler tablosu olu\u015ftural\u0131m\nCREATE TABLE Musteriler (\n    MusteriID INT PRIMARY KEY,\n    Ad NVARCHAR(50),\n    Soyad NVARCHAR(50)\n);\n\n-- \u00d6rnek veriler ekleyelim\nINSERT INTO Musteriler (MusteriID, Ad, Soyad) VALUES\n(1, 'Ay\u015fe', 'Y\u0131lmaz'),\n(2, 'Burak', 'Demir'),\n(3, 'Ceren', 'Kara'),\n(4, 'Deniz', 'Can'),\n(5, 'Emre', 'Ate\u015f'),\n(6, 'Fatih', 'G\u00fcler'),\n(7, 'G\u00f6khan', '\u015eahin');\n\n-- Ad\u0131 'C' ile 'F' aras\u0131ndaki m\u00fc\u015fterileri sorgulayal\u0131m\nSELECT Ad, Soyad\nFROM Musteriler\nWHERE Ad BETWEEN 'Ceren' AND 'Fatih';\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, alfabetik s\u0131ralamaya g\u00f6re 'Ceren' ile 'Fatih' aras\u0131ndaki isimleri (Ceren ve Fatih dahil) getirecektir. \u00c7\u0131kt\u0131 \u015fu \u015fekilde olacakt\u0131r:<\/p>\n<pre><code>\nAd     Soyad\n------ -------\nCeren  Kara\nDeniz  Can\nEmre   Ate\u015f\nFatih  G\u00fcler\n<\/pre>\n<p><\/code><\/p>\n<p>Burada dikkat edilmesi gereken nokta, veritaban\u0131n\u0131n harfleri nas\u0131l s\u0131ralad\u0131\u011f\u0131d\u0131r (harf duyarl\u0131l\u0131\u011f\u0131, b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf ayr\u0131m\u0131). \u00c7o\u011fu veritaban\u0131nda varsay\u0131lan olarak b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z s\u0131ralama kullan\u0131l\u0131r, ancak bu veritaban\u0131 ayarlar\u0131n\u0131za ve kulland\u0131\u011f\u0131n\u0131z harmanlama (collation) t\u00fcr\u00fcne g\u00f6re de\u011fi\u015febilir. \u00d6rne\u011fin, <code>'c'<\/code> ile <code>'F'<\/code> aras\u0131nda bir sorgu, harmanlama ayarlar\u0131n\u0131za ba\u011fl\u0131 olarak farkl\u0131 sonu\u00e7lar verebilir. E\u011fer harf duyarl\u0131l\u0131\u011f\u0131 \u00f6nemliyse, sorgular\u0131n\u0131z\u0131 buna g\u00f6re ayarlaman\u0131z (\u00f6rne\u011fin, <code>LOWER()<\/code> fonksiyonu ile t\u00fcm metni k\u00fc\u00e7\u00fck harfe \u00e7evirerek) gerekebilir. Genel olarak, metinsel verilerde <code>BETWEEN<\/code> kullan\u0131m\u0131 genellikle alfabetik s\u0131ralamaya dayal\u0131 aral\u0131k filtrelemesi i\u00e7in olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r, ancak harmanlama kurallar\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulundurmak \u00f6nemlidir.<\/p>\n<h2>Neden BETWEEN Kullanmal\u0131y\u0131z? Avantajlar\u0131 ve Alternatifleri<\/h2>\n<p><code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn kapsay\u0131c\u0131 yap\u0131s\u0131n\u0131 ve farkl\u0131 veri tipleri \u00fczerindeki davran\u0131\u015flar\u0131n\u0131 anlad\u0131ktan sonra, akla do\u011fal olarak \u015fu soru gelir: \"Neden <code>BETWEEN<\/code> kullanmal\u0131y\u0131z ki, yerine her zaman <code>>= AND <=<\/code> kullanamaz m\u0131y\u0131z?\" Elbette kullanabiliriz, ancak <code>BETWEEN<\/code>'in sundu\u011fu baz\u0131 avantajlar vard\u0131r ve belirli senaryolarda tercih edilmesi mant\u0131kl\u0131 olabilir. Bu b\u00f6l\u00fcmde, <code>BETWEEN<\/code>'in ba\u015fl\u0131ca avantajlar\u0131n\u0131 ve onun alternatifleriyle olan ili\u015fkisini inceleyece\u011fiz.<\/p>\n<h3>Kod Okunabilirli\u011fi ve Yaz\u0131m Kolayl\u0131\u011f\u0131 A\u00e7\u0131s\u0131ndan Kar\u015f\u0131la\u015ft\u0131rma<\/h3>\n<p><code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn en b\u00fcy\u00fck avantaj\u0131, \u015f\u00fcphesiz kod okunabilirli\u011fini ve yaz\u0131m kolayl\u0131\u011f\u0131n\u0131 art\u0131rmas\u0131d\u0131r. Bir aral\u0131k sorgusunu <code>BETWEEN<\/code> ile yazmak, e\u015fde\u011fer <code>AND<\/code> ko\u015fuluyla yazmaktan genellikle daha k\u0131sa ve daha anla\u015f\u0131l\u0131rd\u0131r. \u00d6zellikle sorguyu ilk kez okuyan veya sonradan bak\u0131m\u0131n\u0131 yapan bir geli\u015ftirici i\u00e7in, <code>BETWEEN<\/code> a\u00e7\u0131k\u00e7a bir \"aral\u0131k\" sorgusu yap\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<p>\u015eu iki sorguyu kar\u015f\u0131la\u015ft\u0131ral\u0131m:<\/p>\n<pre><code>\n-- BETWEEN ile yaz\u0131lan sorgu\nSELECT UrunAdi, Fiyat\nFROM Urunler\nWHERE Fiyat BETWEEN 100 AND 200;\n\n-- >= AND <= ile yaz\u0131lan sorgu\nSELECT UrunAdi, Fiyat\nFROM Urunler\nWHERE Fiyat >= 100 AND Fiyat <= 200;\n<\/pre>\n<p><\/code><\/p>\n<p>Her iki sorgu da ayn\u0131 sonucu verecektir. Ancak, ilk sorgu daha kompakt ve g\u00f6rsel olarak bir aral\u0131\u011f\u0131 daha iyi temsil eder. \u00d6zellikle uzun ve karma\u015f\u0131k sorgularda, <code>BETWEEN<\/code> kullanmak, kodun genel yap\u0131s\u0131n\u0131 basitle\u015ftirir ve hata yapma olas\u0131l\u0131\u011f\u0131n\u0131 azalt\u0131r. \u00d6rne\u011fin, tarih aral\u0131klar\u0131nda ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferlerini tekrarlamak yerine tek bir <code>BETWEEN<\/code> ifadesi kullanmak, hem zamandan tasarruf sa\u011flar hem de sorgunun \"temiz\" kalmas\u0131na yard\u0131mc\u0131 olur. Bu nedenle, okunabilirlik ve s\u00fcrd\u00fcr\u00fclebilirlik a\u00e7\u0131s\u0131ndan <code>BETWEEN<\/code> \u00e7o\u011fu zaman tercih edilen bir y\u00f6ntemdir.<\/p>\n<h3>Performans Farkl\u0131l\u0131klar\u0131 Var m\u0131? Detayl\u0131 \u0130nceleme<\/h3>\n<p>Geli\u015ftiricilerin s\u0131k\u00e7a merak etti\u011fi bir di\u011fer konu ise, <code>BETWEEN<\/code> ile <code>>= AND <=<\/code> aras\u0131nda performans fark\u0131 olup olmad\u0131\u011f\u0131d\u0131r. \u00c7o\u011fu modern veritaban\u0131 y\u00f6netim sisteminde (DBMS), sorgu optimize edicileri o kadar geli\u015fmi\u015ftir ki, bu iki ifade bi\u00e7imi aras\u0131nda genellikle <strong>kayda de\u011fer bir performans fark\u0131 bulunmaz<\/strong>. Veritaban\u0131, <code>BETWEEN<\/code> ifadesini i\u00e7sel olarak <code>>= AND <=<\/code> e\u015fde\u011ferine d\u00f6n\u00fc\u015ft\u00fcr\u00fcr ve ayn\u0131 sorgu plan\u0131n\u0131 olu\u015fturur.<\/p>\n<p>Bunu test etmek i\u00e7in, veritaban\u0131n\u0131z\u0131n \"Explain Plan\" veya \"Execution Plan\" \u00f6zelliklerini kullanabilirsiniz. \u00c7o\u011fu durumda, her iki sorgu i\u00e7in de ayn\u0131 veya \u00e7ok benzer bir plan g\u00f6receksiniz. Bu, veritaban\u0131 motorunun semantik olarak e\u015fde\u011fer olan bu iki ifadeyi ayn\u0131 \u015fekilde i\u015fledi\u011fi anlam\u0131na gelir. Yani, birini di\u011ferine tercih etmek genellikle performans kayg\u0131lar\u0131ndan ziyade, kod okunabilirli\u011fi ve ki\u015fisel tercihe ba\u011fl\u0131d\u0131r.<\/p>\n<p>Ancak, \u00e7ok u\u00e7 ve karma\u015f\u0131k senaryolarda, \u00f6zellikle indeksleme stratejileri veya belirli veritabanlar\u0131n\u0131n \u00f6zel optimizasyonlar\u0131 devreye girdi\u011finde, \u00e7ok k\u00fc\u00e7\u00fck farklar ortaya \u00e7\u0131kabilir. Bu durumlar nadirdir ve genel olarak performans odakl\u0131 bir optimizasyon yaparken \u00f6ncelikli olarak bak\u0131lmas\u0131 gereken yer <code>BETWEEN<\/code> ya da <code>AND<\/code> operat\u00f6rlerinden ziyade, indekslerin do\u011fru kullan\u0131l\u0131p kullan\u0131lmad\u0131\u011f\u0131, sorgu yap\u0131s\u0131n\u0131n geneli veya tablo join'lerinin verimlili\u011fi gibi daha b\u00fcy\u00fck etkenlerdir.<\/p>\n<blockquote><p>\n  Uzman \u0130pucu: Sorgu performans\u0131n\u0131z\u0131 optimize etmek istedi\u011finizde, ilk olarak <code>WHERE<\/code> yan t\u00fcmcesindeki s\u00fctunlarda uygun indekslerin olup olmad\u0131\u011f\u0131n\u0131 kontrol edin. \u0130ndeksler, <code>BETWEEN<\/code> veya <code>>= AND <=<\/code> ifadelerinin h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131 i\u00e7in hayati \u00f6neme sahiptir. Operat\u00f6r se\u00e7imi genellikle performanstan \u00e7ok okunabilirlikle ilgilidir.\n<\/p><\/blockquote>\n<p>Sonu\u00e7 olarak, <code>BETWEEN<\/code>'i kullanmak i\u00e7in ana neden performans de\u011fil, okunabilirlik ve yaz\u0131m kolayl\u0131\u011f\u0131d\u0131r. Performans endi\u015feleriniz varsa, odaklanman\u0131z gereken yer daha \u00e7ok indeksler ve genel sorgu mimarisi olmal\u0131d\u0131r.<\/p>\n<h2>BETWEEN Kullan\u0131m\u0131nda S\u0131k Yap\u0131lan Hatalar ve Ka\u00e7\u0131n\u0131lmas\u0131 Gereken Durumlar<\/h2>\n<p><code>BETWEEN<\/code> operat\u00f6r\u00fc basit ve g\u00fc\u00e7l\u00fc olsa da, baz\u0131 durumlarda yanl\u0131\u015f anla\u015f\u0131lmalara veya hatalara yol a\u00e7abilir. \u00d6zellikle tarih ve saat verileriyle \u00e7al\u0131\u015f\u0131rken veya <code>NULL<\/code> de\u011ferlerle kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131nda dikkatli olmak gerekir. Bu b\u00f6l\u00fcmde, <code>BETWEEN<\/code> kullan\u0131rken s\u0131k yap\u0131lan hatalar\u0131 inceleyecek ve bu tuzaklardan nas\u0131l ka\u00e7\u0131n\u0131laca\u011f\u0131n\u0131 \u00f6\u011frenece\u011fiz.<\/p>\n<h3>Tarih ve Saat Aral\u0131klar\u0131: Tam Kapsamay\u0131 Sa\u011flamak<\/h3>\n<p>Daha \u00f6nce de belirtti\u011fimiz gibi, tarih ve saat verilerinde <code>BETWEEN<\/code> kullan\u0131m\u0131 bazen beklenmedik sonu\u00e7lar do\u011furabilir. En yayg\u0131n hata, biti\u015f tarihinin zaman bile\u015fenini do\u011fru bir \u015fekilde belirtmemektir. \u00d6rne\u011fin, t\u00fcm g\u00fcn\u00fc kapsamak istedi\u011finizde sadece tarihi yazmak, o g\u00fcn\u00fcn sadece ba\u015flang\u0131c\u0131n\u0131 (\u00f6rne\u011fin <code>00:00:00<\/code>) kapsayabilir.<\/p>\n<p>Diyelim ki <code>2023-01-01<\/code> ile <code>2023-01-31<\/code> aras\u0131ndaki t\u00fcm kay\u0131tlar\u0131 almak istiyorsunuz. E\u011fer sorguyu \u015fu \u015fekilde yazarsan\u0131z:<\/p>\n<pre><code>\nSELECT *\nFROM LogKayitlari\nWHERE Tarih BETWEEN '2023-01-01' AND '2023-01-31';\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, veritaban\u0131n\u0131n varsay\u0131lan tarih\/saat i\u015fleme bi\u00e7imine ba\u011fl\u0131 olarak, <code>'2023-01-31 00:00:00.000'<\/code> sonras\u0131ndaki t\u00fcm kay\u0131tlar\u0131 <strong>d\u0131\u015flayabilir<\/strong>. Yani, 31 Ocak'ta g\u00fcn i\u00e7inde yap\u0131lan i\u015flemler listeye dahil olmayabilir. Bu, ciddi veri kayb\u0131na veya hatal\u0131 raporlamaya yol a\u00e7abilecek kritik bir hatad\u0131r.<\/p>\n<p>Bu hatadan ka\u00e7\u0131nmak i\u00e7in \u00f6nerilen en iyi y\u00f6ntem, biti\u015f tarihinin zaman bile\u015fenini ya son saniyeye kadar belirtmek ya da <code><<\/code> (k\u00fc\u00e7\u00fckt\u00fcr) operat\u00f6r\u00fcn\u00fc kullanarak bir sonraki g\u00fcn\u00fcn ba\u015flang\u0131c\u0131na kadar olan aral\u0131\u011f\u0131 hedeflemektir.<\/p>\n<pre><code>\n-- G\u00fcvenli Y\u00f6ntem 1: Biti\u015f tarihinin son an\u0131n\u0131 belirtmek\nSELECT *\nFROM LogKayitlari\nWHERE Tarih BETWEEN '2023-01-01 00:00:00' AND '2023-01-31 23:59:59.999'; -- Milisaniye hassasiyetini DBMS'inize g\u00f6re ayarlay\u0131n\n\n-- G\u00fcvenli Y\u00f6ntem 2: '<' operat\u00f6r\u00fc ile bir sonraki g\u00fcn\u00fcn ba\u015flang\u0131c\u0131n\u0131 hedeflemek (Genellikle tercih edilir)\nSELECT *\nFROM LogKayitlari\nWHERE Tarih >= '2023-01-01' AND Tarih < '2023-02-01';\n<\/pre>\n<p><\/code><\/p>\n<p>\u0130kinci y\u00f6ntem genellikle daha az hataya a\u00e7\u0131k ve daha temiz bir \u00e7\u00f6z\u00fcmd\u00fcr, \u00e7\u00fcnk\u00fc milisaniye hassasiyetini veya farkl\u0131 DBMS'lerin zaman bi\u00e7imlendirme farklar\u0131n\u0131 d\u00fc\u015f\u00fcnmenize gerek kalmaz.<\/p>\n<h3>NULL De\u011ferlerin BETWEEN Operat\u00f6r\u00fc \u00dczerindeki Etkisi<\/h3>\n<p>SQL'deki <code>NULL<\/code> de\u011ferler, \"bilinmeyen\" veya \"uygulanabilir olmayan\" bir de\u011feri temsil eder ve \u00e7o\u011fu operat\u00f6rle kar\u015f\u0131la\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda \u00f6zel bir davran\u0131\u015f sergilerler. <code>BETWEEN<\/code> operat\u00f6r\u00fc de bu durumdan etkilenir. E\u011fer sorgulad\u0131\u011f\u0131n\u0131z s\u00fctunda <code>NULL<\/code> de\u011ferler varsa, bu <code>NULL<\/code> de\u011ferler <code>BETWEEN<\/code> operat\u00f6r\u00fc taraf\u0131ndan de\u011ferlendirmeye al\u0131nmaz ve sonu\u00e7 k\u00fcmesine <strong>dahil edilmez<\/strong>.<\/p>\n<pre><code>\n-- \u00d6rnek tablo ve veriler\nCREATE TABLE UrunStok (\n    UrunID INT PRIMARY KEY,\n    UrunAdi NVARCHAR(50),\n    StokMiktari INT\n);\n\nINSERT INTO UrunStok (UrunID, UrunAdi, StokMiktari) VALUES\n(1, 'Kalem', 10),\n(2, 'Defter', 50),\n(3, 'Silgi', NULL),\n(4, 'Kitap', 25);\n\n-- Stok miktar\u0131 10 ile 40 aras\u0131nda olan \u00fcr\u00fcnleri sorgulayal\u0131m\nSELECT UrunAdi, StokMiktari\nFROM UrunStok\nWHERE StokMiktari BETWEEN 10 AND 40;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgunun \u00e7\u0131kt\u0131s\u0131 \u015fu \u015fekilde olacakt\u0131r:<\/p>\n<pre><code>\nUrunAdi StokMiktari\n------- -----------\nKalem   10\nKitap   25\n<\/pre>\n<p><\/code><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, StokMiktari <code>NULL<\/code> olan 'Silgi' \u00fcr\u00fcn\u00fc, <code>BETWEEN<\/code> sorgusunun sonucuna dahil edilmemi\u015ftir. E\u011fer <code>NULL<\/code> de\u011ferleri de belirli bir mant\u0131kla sorgunuza dahil etmek istiyorsan\u0131z, <code>IS NULL<\/code> veya <code>IS NOT NULL<\/code> gibi ek ko\u015fullar kullanman\u0131z gerekecektir:<\/p>\n<pre><code>\n-- NULL de\u011ferleri de dahil etmek isterseniz (\u00f6rne\u011fin, 40'tan az sto\u011fu olanlar veya NULL olanlar)\nSELECT UrunAdi, StokMiktari\nFROM UrunStok\nWHERE StokMiktari BETWEEN 10 AND 40 OR StokMiktari IS NULL;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, hem 10-40 aras\u0131ndaki stoklar\u0131 hem de stok miktar\u0131 bilinmeyen (NULL) \u00fcr\u00fcnleri listeleyecektir.<\/p>\n<h3>NOT BETWEEN Kullan\u0131m\u0131 ve Dikkat Edilmesi Gerekenler<\/h3>\n<p><code>NOT BETWEEN<\/code> operat\u00f6r\u00fc, <code>BETWEEN<\/code>'in tam tersi i\u015flevi g\u00f6r\u00fcr ve belirtilen aral\u0131\u011f\u0131n d\u0131\u015f\u0131ndaki t\u00fcm de\u011ferleri se\u00e7er. Yani, <code>NOT BETWEEN value1 AND value2<\/code> ifadesi, <code>column_name < value1 OR column_name > value2<\/code> ifadesine e\u015fde\u011ferdir. Burada da kapsay\u0131c\u0131l\u0131k mant\u0131\u011f\u0131 tersine i\u015fler; ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferleri, aral\u0131\u011f\u0131n kendisi dahil olmad\u0131\u011f\u0131 i\u00e7in sonu\u00e7 k\u00fcmesine dahil edilmez.<\/p>\n<pre><code>\n-- Stok miktar\u0131 10 ile 40 aras\u0131nda OLMAYAN \u00fcr\u00fcnleri sorgulayal\u0131m\nSELECT UrunAdi, StokMiktari\nFROM UrunStok\nWHERE StokMiktari NOT BETWEEN 10 AND 40;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgunun \u00e7\u0131kt\u0131s\u0131 \u015fu \u015fekilde olacakt\u0131r:<\/p>\n<pre><code>\nUrunAdi StokMiktari\n------- -----------\nDefter  50\nSilgi   NULL\n<\/pre>\n<p><\/code><\/p>\n<p>Burada <code>Defter<\/code> \u00fcr\u00fcn\u00fc (StokMiktari 50) 40'tan b\u00fcy\u00fck oldu\u011fu i\u00e7in listelenir. Yine <code>NULL<\/code> de\u011ferler varsay\u0131lan olarak dahil edilmez. E\u011fer <code>NOT BETWEEN<\/code> kullan\u0131rken <code>NULL<\/code> de\u011ferleri hari\u00e7 tutmak veya dahil etmek isterseniz, yine <code>IS NULL<\/code> veya <code>IS NOT NULL<\/code> ek ko\u015fullar\u0131n\u0131 kullanman\u0131z gerekecektir. <code>NOT BETWEEN<\/code>, belirli bir aral\u0131kta olmamas\u0131 gereken verileri h\u0131zl\u0131ca filtrelemek i\u00e7in olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r, ancak <code>NULL<\/code> de\u011ferlerin davran\u0131\u015f\u0131n\u0131 ve aral\u0131\u011f\u0131n u\u00e7 noktalar\u0131n\u0131n d\u0131\u015flanmas\u0131n\u0131 unutmamak \u00f6nemlidir.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Vaka Analizleri<\/h2>\n<p><code>SQL BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn teorik bilgilerini peki\u015ftirmek ve pratikte nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in ger\u00e7ek d\u00fcnya senaryolar\u0131na g\u00f6z atmak olduk\u00e7a faydal\u0131d\u0131r. A\u015fa\u011f\u0131daki vaka analizleri, bu operat\u00f6r\u00fcn farkl\u0131 sekt\u00f6rlerde ve durumlarda nas\u0131l de\u011fer katt\u0131\u011f\u0131n\u0131 g\u00f6sterecektir.<\/p>\n<h3>E-ticaret Sitesi \u0130\u00e7in Sipari\u015f Filtreleme<\/h3>\n<p>Bir e-ticaret sitesi y\u00f6neticisi oldu\u011funuzu ve belirli bir fiyat aral\u0131\u011f\u0131ndaki veya belirli bir tarih aral\u0131\u011f\u0131ndaki sipari\u015fleri analiz etmek istedi\u011finizi varsayal\u0131m. Bu, kampanya performans\u0131n\u0131 \u00f6l\u00e7mek, en \u00e7ok satan \u00fcr\u00fcnleri belirlemek veya lojistik planlamas\u0131 yapmak i\u00e7in kritik bir bilgidir.<\/p>\n<p><strong>Senaryo:<\/strong> M\u00fc\u015fterilerin 500 TL ile 1500 TL aras\u0131nda yapt\u0131\u011f\u0131 sipari\u015fleri listelemek ve ayn\u0131 zamanda 2023 y\u0131l\u0131n\u0131n ilk \u00e7eyre\u011findeki (Ocak-Mart) t\u00fcm sipari\u015fleri g\u00f6rmek.<\/p>\n<p>\u00d6ncelikle, \u00f6rnek bir <code>Siparisler<\/code> tablosu olu\u015ftural\u0131m:<\/p>\n<pre><code>\nCREATE TABLE Siparisler (\n    SiparisID INT PRIMARY KEY,\n    MusteriID INT,\n    SiparisTarihi DATETIME,\n    ToplamTutar DECIMAL(10, 2),\n    Durum NVARCHAR(50)\n);\n\nINSERT INTO Siparisler (SiparisID, MusteriID, SiparisTarihi, ToplamTutar, Durum) VALUES\n(101, 1, '2023-01-05 10:30:00', 750.00, 'Tamamland\u0131'),\n(102, 2, '2023-01-20 14:00:00', 1200.50, 'Tamamland\u0131'),\n(103, 1, '2023-02-10 09:15:00', 450.00, 'Haz\u0131rlan\u0131yor'),\n(104, 3, '2023-03-01 16:45:00', 1500.00, 'Kargoda'),\n(105, 4, '2023-03-25 11:00:00', 899.99, 'Tamamland\u0131'),\n(106, 2, '2023-04-02 18:00:00', 300.00, '\u0130ptal Edildi'),\n(107, 5, '2023-01-01 00:00:00', 500.00, 'Tamamland\u0131'),\n(108, 6, '2023-03-31 23:59:59', 1499.00, 'Tamamland\u0131');\n<\/pre>\n<p><\/code><\/p>\n<p><strong>Fiyat Aral\u0131\u011f\u0131na G\u00f6re Filtreleme:<\/strong><\/p>\n<pre><code>\nSELECT SiparisID, MusteriID, ToplamTutar\nFROM Siparisler\nWHERE ToplamTutar BETWEEN 500.00 AND 1500.00;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, ToplamTutar s\u00fctununda 500.00 TL ile 1500.00 TL aras\u0131ndaki (her iki limit dahil) t\u00fcm sipari\u015fleri listeleyecektir. Bu sayede, hangi sipari\u015flerin belirli bir kampanya veya de\u011fer aral\u0131\u011f\u0131na girdi\u011fini kolayca g\u00f6rebilirsiniz.<\/p>\n<p><strong>Tarih Aral\u0131\u011f\u0131na G\u00f6re Filtreleme (2023 \u0130lk \u00c7eyrek):<\/strong><\/p>\n<pre><code>\nSELECT SiparisID, SiparisTarihi, ToplamTutar\nFROM Siparisler\nWHERE SiparisTarihi BETWEEN '2023-01-01 00:00:00' AND '2023-03-31 23:59:59';\n-- Veya daha g\u00fcvenli y\u00f6ntem:\n-- WHERE SiparisTarihi >= '2023-01-01' AND SiparisTarihi < '2023-04-01';\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, 2023 y\u0131l\u0131n\u0131n Ocak, \u015eubat ve Mart aylar\u0131na ait t\u00fcm sipari\u015fleri kapsayacak \u015fekilde sonu\u00e7 d\u00f6nd\u00fcrecektir. \u0130lk \u00e7eyrekteki sat\u0131\u015f performans\u0131n\u0131 analiz etmek i\u00e7in idealdir. Tarih aral\u0131klar\u0131nda do\u011fru zaman bile\u015feni kullan\u0131m\u0131na dikkat etmek, hi\u00e7bir sipari\u015fin g\u00f6zden ka\u00e7mamas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Finansal Verilerde \u0130\u015flem Tarihi Sorgulama<\/h3>\n<p>Finans sekt\u00f6r\u00fcnde, belirli tarihler aras\u0131ndaki i\u015flem kay\u0131tlar\u0131n\u0131 sorgulamak kritik bir \u00f6neme sahiptir. Muhasebe d\u00f6nemleri, denetimler veya d\u00fczenleyici raporlamalar i\u00e7in do\u011fru ve eksiksiz veri \u00e7ekmek hayati olabilir.<\/p>\n<p><strong>Senaryo:<\/strong> Bir bankan\u0131n i\u015flem kay\u0131tlar\u0131 tablosundan, 2023 Haziran ay\u0131nda ger\u00e7ekle\u015fen t\u00fcm para transferi i\u015flemlerini listelemek.<\/p>\n<p>\u00d6rnek bir <code>Islemler<\/code> tablosu:<\/p>\n<pre><code>\nCREATE TABLE Islemler (\n    IslemID INT PRIMARY KEY,\n    HesapNo NVARCHAR(20),\n    IslemTarihi DATETIME,\n    IslemTuru NVARCHAR(50),\n    Miktar DECIMAL(18, 2)\n);\n\nINSERT INTO Islemler (IslemID, HesapNo, IslemTarihi, IslemTuru, Miktar) VALUES\n(201, 'TR1234', '2023-05-31 16:00:00', 'Havale', 5000.00),\n(202, 'TR5678', '2023-06-01 09:00:00', 'EFT', 1200.00),\n(203, 'TR1234', '2023-06-15 11:45:00', 'Virman', 750.00),\n(204, 'TR9012', '2023-06-30 23:59:59', 'EFT', 2000.00),\n(205, 'TR3456', '2023-07-01 08:30:00', 'Havale', 1000.00),\n(206, 'TR5678', '2023-06-20 10:00:00', 'Virman', 300.00);\n<\/pre>\n<p><\/code><\/p>\n<p><strong>Haziran 2023 \u0130\u015flemleri \u0130\u00e7in Sorgu:<\/strong><\/p>\n<pre><code>\nSELECT IslemID, HesapNo, IslemTarihi, IslemTuru, Miktar\nFROM Islemler\nWHERE IslemTarihi >= '2023-06-01' AND IslemTarihi < '2023-07-01';\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, Haziran ay\u0131n\u0131n ilk saniyesinden son saniyesine kadar olan t\u00fcm i\u015flemleri (ba\u015flang\u0131\u00e7 ve biti\u015f anlar\u0131 dahil) listeler. Finansal verilerde hassasiyet \u00e7ok \u00f6nemli oldu\u011fu i\u00e7in, <code>>=<\/code> ve <code><<\/code> kombinasyonunun daha g\u00fcvenli oldu\u011fu bu t\u00fcr senaryolarda a\u00e7\u0131k\u00e7a g\u00f6r\u00fcl\u00fcr. B\u00f6ylece, hi\u00e7bir i\u015flemin g\u00f6zden ka\u00e7mad\u0131\u011f\u0131ndan emin olunur ve do\u011fru mali raporlar olu\u015fturulabilir. Bu vaka analizleri, <code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn g\u00fcnl\u00fck veritaban\u0131 i\u015flemlerinde ne kadar g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7 oldu\u011funu g\u00f6stermektedir, yeter ki inceliklerini ve olas\u0131 tuzaklar\u0131n\u0131 anlayal\u0131m.<\/p>\n<h2>Mobil Uyumluluk ve SQL Sorgular\u0131: \u0130stemci Taraf\u0131 Yakla\u015f\u0131mlar<\/h2>\n<p>SQL sorgular\u0131 ve veritaban\u0131 i\u015flemleri genellikle sunucu taraf\u0131nda ger\u00e7ekle\u015fir ve do\u011frudan mobil cihazlar\u0131n kullan\u0131c\u0131 aray\u00fcz\u00fc (UI) ile ilgili de\u011fildir. Ancak, SQL sorgular\u0131ndan elde edilen verilerin mobil uygulamalarda veya responsive web sitelerinde nas\u0131l sunuldu\u011fu, kullan\u0131c\u0131 deneyimi a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu b\u00f6l\u00fcmde, veritaban\u0131ndan \u00e7ekilen verilerin mobil uyumlu aray\u00fczlerde nas\u0131l g\u00f6sterilebilece\u011fi ve HTML \u00e7\u0131kt\u0131s\u0131n\u0131n genel mobil uyumlulu\u011fu \u00fczerinde duraca\u011f\u0131z. Unutmayal\u0131m ki, bu makale SQL hakk\u0131nda olsa da, \u00fcretilecek HTML \u00e7\u0131kt\u0131s\u0131n\u0131n da mobil uyumlu olmas\u0131 talep edilmi\u015ftir.<\/p>\n<h3>Verilerin Mobil Cihazlarda Sunumu: Responsive Tasar\u0131m\u0131n \u00d6nemi<\/h3>\n<p>Bir SQL sorgusundan elde etti\u011finiz sonu\u00e7lar, genellikle bir web sayfas\u0131 veya mobil uygulama \u00fczerinden kullan\u0131c\u0131lara sunulur. Bu \u00e7\u0131kt\u0131lar\u0131n mobil cihazlarda d\u00fczg\u00fcn g\u00f6r\u00fcnmesi, kullan\u0131c\u0131 memnuniyeti i\u00e7in kritik \u00f6neme sahiptir. \u00d6zellikle tablo format\u0131ndaki veriler, k\u00fc\u00e7\u00fck ekranlarda yatay kayd\u0131rma gerektirmeden okunabilir olmal\u0131d\u0131r. Responsive web tasar\u0131m\u0131 prensipleri burada devreye girer. HTML ve CSS kullanarak, veritaban\u0131ndan \u00e7ekilen tablolar\u0131n veya listelerin mobil cihazlara uyum sa\u011flamas\u0131n\u0131 sa\u011flayabiliriz.<\/p>\n<p>\u00d6rne\u011fin, bir \u00fcr\u00fcn listesi veya sipari\u015f ge\u00e7mi\u015fi gibi verileri mobil cihazda g\u00f6sterirken, b\u00fcy\u00fck bir tablo yerine kart bazl\u0131 bir d\u00fczene ge\u00e7mek veya s\u00fctunlar\u0131n belirli bir ekran boyutundan sonra alt alta y\u0131\u011f\u0131lmas\u0131n\u0131 sa\u011flamak iyi bir pratiktir. Bu, <code>CSS Media Queries<\/code> kullanarak ba\u015far\u0131labilir.<\/p>\n<pre><code>\n<!-- HTML Kodu: \u00d6rnek bir veri tablosu -->\n<div class=\"responsive-table-container\">\n  <table class=\"data-table\">\n    <thead>\n      <tr>\n        <th>Sipari\u015f ID<\/th>\n        <th>M\u00fc\u015fteri Ad\u0131<\/th>\n        <th>Sipari\u015f Tarihi<\/th>\n        <th>Toplam Tutar<\/th>\n      <\/tr>\n    <\/thead>\n    <tbody>\n      <tr>\n        <td data-label=\"Sipari\u015f ID\">101<\/td>\n        <td data-label=\"M\u00fc\u015fteri Ad\u0131\">Ali Y\u0131lmaz<\/td>\n        <td data-label=\"Sipari\u015f Tarihi\">2023-01-05<\/td>\n        <td data-label=\"Toplam Tutar\">750.00 TL<\/td>\n      <\/tr>\n      <tr>\n        <td data-label=\"Sipari\u015f ID\">102<\/td>\n        <td data-label=\"M\u00fc\u015fteri Ad\u0131\">Veli Can<\/td>\n        <td data-label=\"Sipari\u015f Tarihi\">2023-01-20<\/td>\n        <td data-label=\"Toplam Tutar\">1200.50 TL<\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<!-- CSS Kodu: Mobil uyumluluk i\u00e7in Media Query \u00f6rne\u011fi -->\n<style>\n.responsive-table-container {\n  overflow-x: auto; \/* K\u00fc\u00e7\u00fck ekranlarda yatay kayd\u0131rma \u00e7ubu\u011fu *\/\n}\n\n.data-table {\n  width: 100%;\n  border-collapse: collapse;\n}\n\n.data-table th, .data-table td {\n  padding: 8px;\n  border: 1px solid #ddd;\n  text-align: left;\n}\n\n\/* Mobil cihazlar i\u00e7in stil tan\u0131mlamalar\u0131 *\/\n@media screen and (max-width: 600px) {\n  .data-table thead {\n    display: none; \/* Ba\u015fl\u0131k sat\u0131r\u0131n\u0131 gizle *\/\n  }\n\n  .data-table, .data-table tbody, .data-table tr, .data-table td {\n    display: block; \/* T\u00fcm tablo \u00f6\u011felerini blok seviyesinde g\u00f6ster *\/\n    width: 100%;\n  }\n\n  .data-table tr {\n    margin-bottom: 15px;\n    border: 1px solid #ddd;\n    display: block;\n  }\n\n  .data-table td {\n    text-align: right;\n    padding-left: 50%; \/* Etiketler i\u00e7in bo\u015fluk *\/\n    position: relative;\n  }\n\n  .data-table td::before {\n    content: attr(data-label); \/* data-label \u00f6zelli\u011fini etiket olarak kullan *\/\n    position: absolute;\n    left: 6px;\n    width: 45%;\n    padding-right: 10px;\n    white-space: nowrap;\n    text-align: left;\n    font-weight: bold;\n  }\n}\n<\/style>\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte, <code><\/p>\n<table><\/code> yap\u0131s\u0131 k\u00fc\u00e7\u00fclen ekranlarda (<code>max-width: 600px<\/code> alt\u0131nda) kart g\u00f6r\u00fcn\u00fcm\u00fcne d\u00f6n\u00fc\u015f\u00fcyor. Her h\u00fccre kendi ba\u015fl\u0131\u011f\u0131n\u0131 (<code>data-label<\/code> niteli\u011finden \u00e7ekerek) g\u00f6steriyor ve veriler daha okunabilir bir formatta sunuluyor. Bu, SQL sorgusundan gelen verinin sunumu i\u00e7in mobil uyumlulu\u011fun nas\u0131l sa\u011flanabilece\u011fine dair basit ama etkili bir \u00f6rnektir.<\/p>\n<p>\u00d6zetle, SQL do\u011frudan mobil uyumlulukla ilgilenmezken, SQL sorgular\u0131ndan elde edilen verilerin front-end (istemci taraf\u0131) teknolojileri (HTML, CSS, JavaScript) kullan\u0131larak mobil cihazlarda en iyi \u015fekilde sunulmas\u0131, ba\u015far\u0131l\u0131 bir uygulama veya web sitesi i\u00e7in vazge\u00e7ilmezdir. Dolay\u0131s\u0131yla, bir backend geli\u015ftiricisi olsan\u0131z bile, elde etti\u011finiz verilerin nas\u0131l sunulaca\u011f\u0131n\u0131n \u00f6nemi ve responsive tasar\u0131m prensipleri hakk\u0131nda temel bilgi sahibi olmak, projenizin genel ba\u015far\u0131s\u0131na katk\u0131da bulunacakt\u0131r.<\/p>\n<h2>Sonu\u00e7: SQL BETWEEN'in G\u00fcc\u00fc ve Netli\u011fi<\/h2>\n<p>Bu kapsaml\u0131 makale boyunca, <code>SQL BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn inceliklerini derinlemesine inceledik. Temel anlay\u0131\u015f\u0131m\u0131z, <code>BETWEEN<\/code> operat\u00f6r\u00fcn\u00fcn <strong>kesinlikle kapsay\u0131c\u0131<\/strong> oldu\u011fudur; yani, belirtilen ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferleri de aral\u0131\u011fa dahildir. Bu, hem say\u0131sal, hem metinsel hem de tarih\/saat verileri i\u00e7in ge\u00e7erlidir. Okunabilirlik ve yaz\u0131m kolayl\u0131\u011f\u0131 a\u00e7\u0131s\u0131ndan <code>BETWEEN<\/code>, <code>>= AND <=<\/code> kombinasyonuna g\u00f6re \u00e7o\u011fu zaman daha iyi bir alternatif sunar ve modern veritaban\u0131 optimize edicileri sayesinde performans a\u00e7\u0131s\u0131ndan genellikle bir fark yaratmaz.<\/p>\n<p>Ancak, tarih ve saat verileriyle \u00e7al\u0131\u015f\u0131rken zaman bile\u015fenlerinin hassasiyeti nedeniyle dikkatli olunmas\u0131 gerekti\u011fini ve <code>NULL<\/code> de\u011ferlerin <code>BETWEEN<\/code> taraf\u0131ndan varsay\u0131lan olarak g\u00f6z ard\u0131 edildi\u011fini de g\u00f6rd\u00fck. Bu tuzaklardan ka\u00e7\u0131nmak i\u00e7in \u00f6nerilen g\u00fcvenli y\u00f6ntemleri ve <code>IS NULL<\/code> gibi ek ko\u015fullar\u0131 kullanmay\u0131 \u00f6\u011frendik. Ger\u00e7ek d\u00fcnya senaryolar\u0131, e-ticaret sitelerinden finansal uygulamalara kadar bir\u00e7ok alanda <code>BETWEEN<\/code>'in ne kadar pratik ve g\u00fc\u00e7l\u00fc bir ara\u00e7 oldu\u011funu g\u00f6zler \u00f6n\u00fcne serdi. Son olarak, SQL \u00e7\u0131kt\u0131lar\u0131n\u0131n mobil cihazlarda nas\u0131l daha iyi sunulabilece\u011fine dair istemci taraf\u0131 yakla\u015f\u0131mlara de\u011finerek, genel geli\u015ftirme s\u00fcrecine farkl\u0131 bir bak\u0131\u015f a\u00e7\u0131s\u0131 sunduk.<\/p>\n<p><code>SQL BETWEEN<\/code> operat\u00f6r\u00fc, veritaban\u0131 sorgular\u0131n\u0131zda aral\u0131k bazl\u0131 filtrelemeyi basitle\u015ftiren ve kodunuzu daha okunabilir hale getiren de\u011ferli bir ara\u00e7t\u0131r. Do\u011fru anla\u015f\u0131ld\u0131\u011f\u0131nda ve do\u011fru kullan\u0131ld\u0131\u011f\u0131nda, verimli ve hatas\u0131z sorgular yazman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<h3>SQL BETWEEN neden bu kadar s\u0131k yanl\u0131\u015f anla\u015f\u0131l\u0131yor?<\/h3>\n<p><code>SQL BETWEEN<\/code>'in yanl\u0131\u015f anla\u015f\u0131lmas\u0131n\u0131n temel nedeni, farkl\u0131 programlama dilleri ve ba\u011flamlardaki \"aral\u0131k\" tan\u0131mlar\u0131n\u0131n \u00e7e\u015fitlili\u011fidir. Baz\u0131 programlama dillerinde aral\u0131klar d\u0131\u015flay\u0131c\u0131 (exclusive) olabilirken, SQL'de <code>BETWEEN<\/code> standard\u0131 gere\u011fi kapsay\u0131c\u0131d\u0131r. Bu fark, al\u0131\u015fkanl\u0131klar veya di\u011fer dillerden gelen geli\u015ftiriciler i\u00e7in kafa kar\u0131\u015f\u0131kl\u0131\u011f\u0131na yol a\u00e7abilir.<\/p>\n<h3>BETWEEN ve <code>>= AND <=<\/code> kullan\u0131m\u0131 aras\u0131nda performans fark\u0131 var m\u0131?<\/h3>\n<p>Genellikle modern veritaban\u0131 y\u00f6netim sistemlerinde (DBMS) <code>BETWEEN<\/code> ve <code>>= AND <=<\/code> ifadeleri aras\u0131nda kayda de\u011fer bir performans fark\u0131 yoktur. Veritaban\u0131 sorgu optimize edicileri, her iki ifadeyi de ayn\u0131 veya \u00e7ok benzer bir sorgu plan\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Performans endi\u015feleriniz varsa, odaklanman\u0131z gereken yer daha \u00e7ok indekslerin do\u011fru kullan\u0131lmas\u0131 ve genel sorgu yap\u0131s\u0131n\u0131n optimizasyonu olmal\u0131d\u0131r.<\/p>\n<h3>Tarih sorgular\u0131nda zaman bile\u015fenini nas\u0131l do\u011fru y\u00f6netebilirim?<\/h3>\n<p>Tarih sorgular\u0131nda zaman bile\u015fenini do\u011fru y\u00f6netmek i\u00e7in en g\u00fcvenli yakla\u015f\u0131m, biti\u015f tarihinin bir sonraki g\u00fcn\u00fcn\u00fcn ba\u015flang\u0131c\u0131n\u0131 hedeflemektir. \u00d6rne\u011fin, <code>WHERE Tarih >= '2023-01-01' AND Tarih < '2023-02-01'<\/code> \u015feklinde bir sorgu kullanmak, Ocak ay\u0131ndaki t\u00fcm kay\u0131tlar\u0131 (01 Ocak 00:00:00'dan 31 Ocak 23:59:59.999'a kadar) milisaniye hassasiyetinde kapsayacakt\u0131r. Alternatif olarak, biti\u015f tarihinin son saniyesini tam olarak belirtmek (<code>'2023-01-31 23:59:59.999'<\/code> gibi) de bir y\u00f6ntemdir, ancak bu hassasiyet DBMS'e g\u00f6re de\u011fi\u015febilir.<\/p>\n<h3>NOT BETWEEN ne anlama gelir?<\/h3>\n<p><code>NOT BETWEEN<\/code> operat\u00f6r\u00fc, <code>BETWEEN<\/code>'in tam tersi i\u015flevi g\u00f6r\u00fcr. Belirtilen aral\u0131\u011f\u0131n (ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferleri dahil) d\u0131\u015f\u0131ndaki t\u00fcm de\u011ferleri se\u00e7er. Yani, <code>WHERE column_name NOT BETWEEN value1 AND value2<\/code> ifadesi, <code>WHERE column_name < value1 OR column_name > value2<\/code> ifadesine e\u015fde\u011ferdir. Bu, belirli bir aral\u0131kta olmamas\u0131 gereken verileri filtrelemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>NULL de\u011ferler BETWEEN operat\u00f6r\u00fc taraf\u0131ndan nas\u0131l i\u015flenir?<\/h3>\n<p>SQL'deki <code>NULL<\/code> de\u011ferler, <code>BETWEEN<\/code> operat\u00f6r\u00fc taraf\u0131ndan de\u011ferlendirmeye al\u0131nmaz ve sonu\u00e7 k\u00fcmesine dahil edilmez. E\u011fer bir s\u00fctunda <code>NULL<\/code> de\u011ferler varsa ve bu de\u011ferleri de sorgunuza dahil etmek isterseniz, <code>OR column_name IS NULL<\/code> gibi ek bir ko\u015ful kullanman\u0131z gerekmektedir. \u00d6rne\u011fin: <code>WHERE StokMiktari BETWEEN 10 AND 40 OR StokMiktari IS NULL;<\/code><\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Veritaban\u0131 sorgular\u0131nda s\u0131k\u00e7a kullan\u0131lan bir operat\u00f6r olan SQL BETWEEN, genellikle ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferlerini i\u00e7eren bir aral\u0131k belirtmek&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1505],"tags":[],"class_list":{"0":"post-31158","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-sql-2","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber<\/title>\n<meta name=\"description\" content=\"Veritaban\u0131 sorgular\u0131nda s\u0131k\u00e7a kullan\u0131lan bir operat\u00f6r olan SQL BETWEEN, genellikle ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferlerini i\u00e7eren bir aral\u0131k belirtmek i\u00e7in kullan\u0131l\u0131r. Ancak bir\u00e7ok geli\u015ftiricinin akl\u0131n\u0131 kurcalayan temel soru \u015fudur: Bu aral\u0131k kapsay\u0131c\u0131 (inclusive) m\u0131, yoksa d\u0131\u015flay\u0131c\u0131 (exclusive) m\u0131 \u00e7al\u0131\u015f\u0131r? Bu kapsaml\u0131 rehberde, BETWEEN operat\u00f6r\u00fcn\u00fcn inceliklerini derinlemesine ele alacak, ger\u00e7ek d\u00fcnya senaryolar\u0131yla peki\u015ftirecek ve s\u0131k\u00e7a yap\u0131lan hatalar\u0131n \u00f6n\u00fcne nas\u0131l ge\u00e7ilece\u011fini ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber\" \/>\n<meta property=\"og:description\" content=\"Veritaban\u0131 sorgular\u0131nda s\u0131k\u00e7a kullan\u0131lan bir operat\u00f6r olan SQL BETWEEN, genellikle ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferlerini i\u00e7eren bir aral\u0131k belirtmek i\u00e7in kullan\u0131l\u0131r. Ancak bir\u00e7ok geli\u015ftiricinin akl\u0131n\u0131 kurcalayan temel soru \u015fudur: Bu aral\u0131k kapsay\u0131c\u0131 (inclusive) m\u0131, yoksa d\u0131\u015flay\u0131c\u0131 (exclusive) m\u0131 \u00e7al\u0131\u015f\u0131r? Bu kapsaml\u0131 rehberde, BETWEEN operat\u00f6r\u00fcn\u00fcn inceliklerini derinlemesine ele alacak, ger\u00e7ek d\u00fcnya senaryolar\u0131yla peki\u015ftirecek ve s\u0131k\u00e7a yap\u0131lan hatalar\u0131n \u00f6n\u00fcne nas\u0131l ge\u00e7ilece\u011fini ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-06T10:31:59+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber\",\"datePublished\":\"2025-10-06T10:31:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/\"},\"wordCount\":4113,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"SQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/\",\"name\":\"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-06T10:31:59+00:00\",\"description\":\"Veritaban\u0131 sorgular\u0131nda s\u0131k\u00e7a kullan\u0131lan bir operat\u00f6r olan SQL BETWEEN, genellikle ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferlerini i\u00e7eren bir aral\u0131k belirtmek i\u00e7in kullan\u0131l\u0131r. Ancak bir\u00e7ok geli\u015ftiricinin akl\u0131n\u0131 kurcalayan temel soru \u015fudur: Bu aral\u0131k kapsay\u0131c\u0131 (inclusive) m\u0131, yoksa d\u0131\u015flay\u0131c\u0131 (exclusive) m\u0131 \u00e7al\u0131\u015f\u0131r? Bu kapsaml\u0131 rehberde, BETWEEN operat\u00f6r\u00fcn\u00fcn inceliklerini derinlemesine ele alacak, ger\u00e7ek d\u00fcnya senaryolar\u0131yla peki\u015ftirecek ve s\u0131k\u00e7a yap\u0131lan hatalar\u0131n \u00f6n\u00fcne nas\u0131l ge\u00e7ilece\u011fini ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber","description":"Veritaban\u0131 sorgular\u0131nda s\u0131k\u00e7a kullan\u0131lan bir operat\u00f6r olan SQL BETWEEN, genellikle ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferlerini i\u00e7eren bir aral\u0131k belirtmek i\u00e7in kullan\u0131l\u0131r. Ancak bir\u00e7ok geli\u015ftiricinin akl\u0131n\u0131 kurcalayan temel soru \u015fudur: Bu aral\u0131k kapsay\u0131c\u0131 (inclusive) m\u0131, yoksa d\u0131\u015flay\u0131c\u0131 (exclusive) m\u0131 \u00e7al\u0131\u015f\u0131r? Bu kapsaml\u0131 rehberde, BETWEEN operat\u00f6r\u00fcn\u00fcn inceliklerini derinlemesine ele alacak, ger\u00e7ek d\u00fcnya senaryolar\u0131yla peki\u015ftirecek ve s\u0131k\u00e7a yap\u0131lan hatalar\u0131n \u00f6n\u00fcne nas\u0131l ge\u00e7ilece\u011fini ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber","og_description":"Veritaban\u0131 sorgular\u0131nda s\u0131k\u00e7a kullan\u0131lan bir operat\u00f6r olan SQL BETWEEN, genellikle ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferlerini i\u00e7eren bir aral\u0131k belirtmek i\u00e7in kullan\u0131l\u0131r. Ancak bir\u00e7ok geli\u015ftiricinin akl\u0131n\u0131 kurcalayan temel soru \u015fudur: Bu aral\u0131k kapsay\u0131c\u0131 (inclusive) m\u0131, yoksa d\u0131\u015flay\u0131c\u0131 (exclusive) m\u0131 \u00e7al\u0131\u015f\u0131r? Bu kapsaml\u0131 rehberde, BETWEEN operat\u00f6r\u00fcn\u00fcn inceliklerini derinlemesine ele alacak, ger\u00e7ek d\u00fcnya senaryolar\u0131yla peki\u015ftirecek ve s\u0131k\u00e7a yap\u0131lan hatalar\u0131n \u00f6n\u00fcne nas\u0131l ge\u00e7ilece\u011fini ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-06T10:31:59+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber","datePublished":"2025-10-06T10:31:59+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/"},"wordCount":4113,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["SQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/","name":"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-06T10:31:59+00:00","description":"Veritaban\u0131 sorgular\u0131nda s\u0131k\u00e7a kullan\u0131lan bir operat\u00f6r olan SQL BETWEEN, genellikle ba\u015flang\u0131\u00e7 ve biti\u015f de\u011ferlerini i\u00e7eren bir aral\u0131k belirtmek i\u00e7in kullan\u0131l\u0131r. Ancak bir\u00e7ok geli\u015ftiricinin akl\u0131n\u0131 kurcalayan temel soru \u015fudur: Bu aral\u0131k kapsay\u0131c\u0131 (inclusive) m\u0131, yoksa d\u0131\u015flay\u0131c\u0131 (exclusive) m\u0131 \u00e7al\u0131\u015f\u0131r? Bu kapsaml\u0131 rehberde, BETWEEN operat\u00f6r\u00fcn\u00fcn inceliklerini derinlemesine ele alacak, ger\u00e7ek d\u00fcnya senaryolar\u0131yla peki\u015ftirecek ve s\u0131k\u00e7a yap\u0131lan hatalar\u0131n \u00f6n\u00fcne nas\u0131l ge\u00e7ilece\u011fini ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/sql-between-kapsayici-mi-dislayici-mi-kapsamli-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL BETWEEN Kapsay\u0131c\u0131 m\u0131 D\u0131\u015flay\u0131c\u0131 m\u0131? Kapsaml\u0131 Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31158"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31158\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}