-- SELECT FONKSIYONLARI --
-- select içerisinde kullanılan fonksiyonlar where ile de kullanılabilir.
use Filmler
-- Oyuncu adından soldan 2, soyadından sağdan 4 karakter al ve getir.
-- LEFT: soldan başla, RIGHT: sağdan başla.
select LEFT(adi, 2) as adisoldaniki, RIGHT(soyadi, 4) as soyadisagdandort from Oyuncu
-- Oyuncu adının karakterlerini küçült, soyadının karakterlerini büyüt.
-- LOWER: harfleri küçült, UPPER: harfleri büyüt.
select LOWER(adi) as adikucuk, UPPER(soyadi) as soyadibuyuk from Oyuncu
-- Oyuncu adının 2. karakterini getir.
-- SUBSTRING(input parametresi,
-- başlangıç karakteri indexi,
-- başlangıç karakterinden itibaren kaç karakter alacağı)
select SUBSTRING(adi,2,1) as ikincikarakter from Oyuncu
-- Oyuncu adını ve soyadını virgül ile birleştir, 3. karakter ile (3. karakter dahil)
-- 7. karakter (7. karakter dahil değil) arasını getir.
-- SQL String'lerde saymaya 1'den başlar yani ilk index 1'dir, 0 değil.
select SUBSTRING(adi + ',' + soyadi, 3, 4) as ucilealtiarasi from Oyuncu
-- Oyuncu adını tersten yaz.
select REVERSE(adi) as terstenadi from Oyuncu
-- Oyuncu adını ve soyadını virgül ile birleştir, 3. karakter ile (3. karakter dahil)
-- 7. karakter (7. karakter dahil değil) arasını tersten yazarak getir.
select REVERSE(SUBSTRING(adi + ',' + soyadi, 3, 4)) as terstenucilealtiarasi from Oyuncu
-- LEN: Length.
select adi, LEN(adi) as adikarakteruzunlugu from Oyuncu
-- ROUND: Yuvarla. Parametresi 0 ise virgülden önceki değere,
-- 1 ise virgülden sonraki değere yuvarlama yapar.
select ROUND(1.22, 0)
select ROUND(1.66, 0)
select ROUND(1.22, 1)
select ROUND(1.66, 1)
-- SPACE: Boşluk bırak. Parametresi kadar boşluk bırakır.
select adi + SPACE(1) + soyadi as adisoyadi from Oyuncu
select adi + SPACE(20) + soyadi as adisoyadi from Oyuncu
-- Bugünün tarihi ve saati:
select GETDATE() as bugununtarihivesaati
select convert(varchar, getdate(), 104) + ' ' + convert(varchar, getdate(), 24) bugununtarihivesaati -- Türkçe formatında bugünün tarihi ve saati
-- Bugünün tarih ve saatine 2 gün eklenmiş tarih ve saat:
select DATEADD(day, 2, GETDATE()) as ikigunsonrakitarihvesaat
-- Bugünün tarih ve saatine 3 ay eklenmiş tarih ve saat:
select DATEADD(month, 3, GETDATE()) as ucaysonrakitarihvesaat
-- Bugünün tarih ve saatine 4 yıl eklenmiş tarih ve saat:
select DATEADD(year, 4, GETDATE()) as dortyilsonrakitarihvesaat
-- Bugünün tarih ve saatine 5 saat eklenmiş tarih ve saat:
select DATEADD(hour, 5, GETDATE()) as bessaatsonrakitarihvesaat
-- Yılın hangi çeyreğindeyiz?
select DATENAME(QUARTER, GETDATE()) as yilinhangiceyregindeyiz
-- Haftanın hangi günündeyiz?
select DATENAME(WEEKDAY, GETDATE()) as haftaninhangigunundeyiz
-- Yılın hangi ayındayız?
select DATENAME(MONTH, GETDATE()) as yilinhangiayindayiz
-- Hangi yıldayız?
select DATENAME(YEAR, GETDATE()) as hangiyildayiz
-- Tarih farklarını bulma:
set dateformat dmy
-- tarih (dateformat) formatını belirler. d: gün, m: ay, y: yıl.
select DATEDIFF(DAY, '17.05.1980', GETDATE()) as dogumumdanberikacgungecmis
select DATEDIFF(MONTH, '17.05.1980', GETDATE()) as dogumumdanberikacaygecmis
select DATEDIFF(YEAR, '17.05.1980', GETDATE()) as dogumumdanberikacyilgecmis
select DATEDIFF(HOUR, '17.05.1980', GETDATE()) / ((365 * 24) + 6) as yas -- en doğru hesap
set dateformat ymd
select DATEPART(DAY, '1980-05-17') -- gün: 17
select DATEPART(MONTH, '1980-05-17') -- ay: 5
select DATEPART(YEAR, '1980-05-17') -- yıl: 1980
select DATEPART(HOUR, '1980-05-17 11:58:59') -- saat: 11
select DATEPART(MINUTE, '1980-05-17 11:58:59') -- dakika: 58
select DATEPART(SECOND, '1980-05-17 11:58:59') -- saniye: 59
select DAY(GETDATE()) -- gün
select MONTH(GETDATE()) -- ay
select YEAR(GETDATE()) -- yıl
select TRIM(' ÇAĞIL ALSAÇ ') -- baştaki ve sondaki tüm boş karakterleri kaldır
select LTRIM(RTRIM(' ÇAĞIL ALSAÇ ')) -- önce sondaki sonra baştaki tüm boş karakterleri kaldır
-- ROW_NUMBER()
select * from (
select ROW_NUMBER() over (order by adi) as sira, adi, soyadi from Oyuncu
) tmp
-- where'de fonksiyon kullanımları
select * from Oyuncu where YEAR(dogumtarihi) >= 1970 and DATEPART(MONTH, dogumtarihi) >= 1 and DAY(dogumtarihi) >= 1
select UPPER(adi) adibuyukharf, UPPER(soyadi) soyadibuyukharf, * from Yonetmen where UPPER(adi) = UPPER('james') and UPPER(soyadi) = UPPER('cameron')
set dateformat dmy
select * from oyuncu where dogumtarihi < '01.01.1970'
select * from oyuncu where dogumtarihi < convert(varchar(10), '1970-01-01', 104)
select * from yonetmen where adi + ' ' + soyadi = ' james cameron ' -- başında ve sonunda boşluk olduğundan veri dönmez
select * from yonetmen where adi + ' ' + soyadi = trim(' james cameron ')
select * from yonetmen where adi + ' ' + soyadi = trim(' guy ritchie ')
select * from yonetmen where adi + ' ' + soyadi = ltrim(rtrim(' guy ritchie '))