2011-05-16 15 views
32

Bunun yanı sorguda şu anda var, bir datetime alanı açıp:MySQL'de bir datetime'dan 3 saat nasıl çıkarılır?

SELECT DATE_FORMAT(x.date_entered, '%Y-%m-%d') AS date FROM x ORDER BY date ASC 

Ne yapmak istiyorum bu tarihten itibaren 3 saat (GMT sorunları) çıkarmak, ama PHP ile bunu yapamaz PHP sadece tarih bölümünü bilir, zamanı değil.

cevap

59

mySQL DATE_SUB() sahiptir:

SELECT DATE_SUB(column, INTERVAL 3 HOUR).... 

ama denemek ve bunun yerine altta yatan saat dilimi sorunu çözmek için daha iyi olmaz mı?

+0

gibi dönüştürmek olabilir ihtiyacım olan formatta? '% Y-% m-% d' –

+0

@Lucas Niçin' DATE_FORMAT() 'nı yaptığınızdan emin değilim - DATE (x.date_entered)' zaten yapmıyor mu? Son satır DATE olacaktır (DATE_SUB (x.date_entered, INTERVAL 3 HOUR)) –

+0

İstediğim biçimde tarihi önceden biçimlendirmek istedim (YYYY/AA/GG), ancak nasıl emin olamadım PHP'de bunu yapmak için SQL kullanıyorum. –

0

bazı zaman dilimi sorunu var ve kaynağını ve hedef dilimini biliyorum varsayarsak, Kuyu GMT nasıl kapmak için tam bir degisebilirim şey (lanet eski) ama yani

SELECT DATE_FORMAT(CONVERT_TZ(x.date_entered, 'UTC', 'Europe/Berlin'), 
        '%Y-%m-%d') AS date 
FROM x ORDER BY date ASC; 
İlgili konular