Timestamp parçaları dayanan bir MySQL DB seçilmesi

4 Cevap php

Damgası belirli bir yılda bir DB satır seçmek için bir yolu var mı? Belirli bir zaman damgası, sadece bir dizi (örn. 2009 yılı içinde tüm damgaları) yok. Bunu yapmak için bir yolu var mı? Başka nasıl böyle bir şey yapıyor hakkında gitmek olabilir? Yardımlarınız için teşekkürler!

-IMaster

4 Cevap

: Gibi basit

SELECT * FROM table WHERE YEAR(timestamp) = '1999'

Kullanın:

WHERE timestamp_col BETWEEN STR_TO_DATE('2009-01-01', '%Y-%m-%d') 
                        AND STR_TO_DATE('2009-12-31', '%Y-%m-%d')

Bir sütun üzerinde gerçekleştirilen herhangi bir işlevleri bir dizin, bir o sütun için varsa, kullanılamaz anlamına gelir.

Ben bir dize olarak sağlanan olursa olsun tarih timestamp olarak MySQL ile yorumlanabilir olmasını sağlamak için STR_TO_DATE işlevi kullanılır.

Referans:

Kullan FROM_UNIXTIME bu benzer:

SELECT
  FROM_UNIXTIME(my_timestamp, '%Y') AS year
FROM
  table_name
WHERE
  FROM_UNIXTIME(my_timestamp, '%Y') = 2009;

'My_timestamp' senin timestamp sütun adıdır.

Alternatif olarak bir DATETIME dönüştürebilirsiniz

Eğer datetime dönüştürmek, size bir DATETIME almak ve bir tarih olarak biçimlendirmek için olanak mysql kayıt gerekli işlevini kullanarak bunu yapabilirsiniz. Sonra bu sütuna göre grup.

  private function _formatDate() {
    if ($this->_granularity == 'month') {
      return '%y/%M';
    }elseif($this->_granularity == 'day') {
      return '%y/%M/%d';
    }
  } 

  public function getmyquery() {
    $query = "
 SELECT count( * ) as visits, DATE_FORMAT( `myOriginalDateField` , '".$this->_formatDate()."' ) AS mydate
 FROM `mys`
 WHERE id = ".$this->_Id."
 GROUP BY mydate
 ORDER BY mydate ASC
 ";
    return $query
  }

Mükemmel öneriler önemli bir katkı burada zaten verilmiştir: Eğer (bir kerelik raporu olarak çalışan aksine) sayfalarınızı render bir parçası olarak bu sorguyu yürüttükten planlıyorsanız, gerçekten performans düşünmelisiniz. Bir şey karşılaştırarak önce fonksiyonu ile sütun değeri post-processing eğer Endeksleri size çok yardımcı olmayacaktır.

Bu durumda, ben vs SADECE yıl içeren ayrı bir veritabanı sütun, ya da sadece ay, yaratma düşünün