10 Kasım 2017 Cuma

MySQL Date ve Time Metodları

Giriş
Metodlar burada

Zamanı Alma Metodları
CurDate metodu
String veya sayı tipinden tarihi döndürür. Şöyle yaparız
SELECT YEAR(CURDATE());
Şöyle yaparız.
SELECT * FROM `table` WHERE CURDATE() between fromdate and todate
CurTime metodu
String veya sayı tipinden saati döndürür. Şöyle yaparız.
SELECT curtime(),... FROM table_name
Date metodu
Tarihi almak için şöyle yaparız.
SELECT DATE(NOW()) ...
Belirtilen anının tarih kısmını döner. An from_unixtime ile saniye değerinden geri alınır. Şöyle yaparız.
DATE(from_unixtime(ql.time_id)) BETWEEN '2017-10-03' AND '2017-10-04'
Day metodu
Parametre olarak date alır. Tarihin sadece gün alanını almak için şöyle yaparız. 1-31 arasında değer döner.
SELECT DAY (created) FROM ...
Month metodu
Parametre olarak date alır. Tarihin sadece ay alanını almak için şöyle yaparız.
SELECT * FROM your_table WHERE MONTH(STR_TO_DATE(date, '%d-%m-%Y')) = 10;
Now metodu
Şöyle yaparız.
SELECT NOW() ...
Time metodu
Belirtilen anının saat kısmını döner. An from_unixtime ile saniye değerinden geri alınır. Şöyle yaparız.
AND (TIME(from_unixtime(ql.time_id)) BETWEEN '16:00' AND '23:59'   
OR TIME(from_unixtime(ql.time_id)) BETWEEN '00:00' AND 01:01')
UNIX_TIMESTAMP metodu
Şöyle yaparız. Çıktı olarak 1356843600 alırız.
UPDATE students SET start_date_ts = UNIX_TIMESTAMP(STR_TO_DATE('2012-12-30', '%Y-%m-%d'));
Year metodu
Parametre olarak date alır. Tarihin sadece yıl alanını almak için şöyle yaparız
SELECT YEAR(CURDATE());
Aritmetik Metodlar
Date_Add
Interval Day
Şöyle yaparız.
SELECT * FROM tableName 
WHERE bill_date BETWEEN DATE_ADD(NOW(), INTERVAL 60 DAY) AND NOW();
Interval Month
Ay eklemek için şöyle yaparız. Eklenen ay sayısı 30,31 olabilir.
select name, start_date, DATE_ADD(start_date,INTERVAL 1 month) as endate
from yourtable 
Çıktı olarak şunu alırız
Name | start_date | endate
BEN  | 2016-02-13 | 2016-03-13
JONY | 2016-10-12 | 2016-11-12
JHON | 2016-11-04 | 2016-12-04
DateDiff metodu
Şöyle yaparız.
where datediff(expiry_date, now ()) <= 30
Date_Sub
Interval Week
Şöyle yaparız.
SELECT * FROM tbl WHERE sent BETWEEN DATE_SUB(NOW(), INTERVAL 1 WEEK) AND NOW();
TimeDiff metodu
Aynı tipten iki değer arasındaki farkı expr1 - exp2 olarak verir. Çıktı HH:MM:SS.microseconds şeklindedir. Şöyle yaparız.
select TIMEDIFF(max(timestamp), min(timestamp)) from <TABLE NAME>
TimeStampDiff metodu
Aynı değer arasındaki farkı expr2 - exp1 olarak verir.
Örnek
İki tarih arasındaki farkı saniye olarak almak için şöyle yaparız.
select TIMESTAMPIFF(SECOND,min(timestamp), max(timestamp)) from <TABLE NAME>
Örnek
İki tarih arasındaki farkı dakika olarak almak için şöyle yaparız.
select id,system,TIMESTAMPDIFF(MINUTE,start,end) as diff_min from table_name;
String'e Çevirme Metodları
Date_Format
%Y : Year
%m : month
%d : day
%h : hour
%i : minute
%s : second
Şöyle yaparız.
SELECT DATE_FORMAT(t.column,'%Y:%m:%d %h:%i:%s'),...
FROM YourTable t
Bazı formatlama karakterleri yerine rakam verebiliriz. Saati elle belirlemek için şöyle yaparız.
UPDATE test_table 
SET 
    from_date = DATE_FORMAT(NOW(),"%Y-%m-%d 00:00:00"),
    to_date = DATE_FORMAT(NOW(),"%Y-%m-%d 23:59:59")
String'den Çevirme Metodları
Cast
Örnek
Şöyle yaparız
SELECT *  FROM table_name WHERE 
    CURTIME() BETWEEN 
        CAST(CONCAT(START_HOUR,":00:00") AS TIME) AND 
        CAST(CONCAT(END_HOUR,":00:00") AS TIME)
Örnek
Şöyle yaparız. Çıktı olarak şunu alırız 2017-09-02 00:00:00.000 +02:00

Cast('2017-09-02 00:00:00' as datetime)  AT TIME ZONE 'Central Europe Standard Time' 
Str_To_Date
Date döndürür. Şöyle yaparız.
STR_TO_DATE('151216', '%d%m%y')
Şöyle yaparız.
select to_days(curdate()) - to_days(str_to_date(col, '%d%m%y'))
Şöyle yaparız.
SELECT * FROM your_table WHERE MONTH(STR_TO_DATE(date, '%d-%m-%Y')) = 10;
Diğer Notlar
En yeni tarihi bulmak için max metodu kullanılabilir. Şöyle yaparız.
declare @MaxOrderDate datetime
select @MaxOrderDate = MAX(OrderItem.OrderDate) from OrderItem

Select
    ...
FROM 
    OrderItem 
WHERE
    OrderItem.OrderDate = @MaxOrderDate


Hiç yorum yok:

Yorum Gönder