Mysql "LIKE" nasıl kullanılır

4 Cevap php

Ben benim kullanıcıların belirli bir gününde gönderilen bir satır için veritabanı aramak için izin istiyorum. Tarih büyük date() fonksiyonunu kullanarak veritabanı alanına girdi, ama ben php strtotime işlevini kullandığınızda, tabii tarihleri ​​tam olarak aynı değildir edilir.

Bu konuda bana yardımcı olabilecek bazı akıllı mysql işlevi var mı?

4 Cevap

Ben önce bu bir sorun vardı.

Bir başlangıç ​​ve bitiş tarihini oluşturmak için en iyi konum sonra işlevi ARASINDA yerine kullanılacak.

Yani böyle bir şey:

$start_date = "2009-01-01 00:00:00";
$end_date = "2009-01-01 23:59:59";

$sql = "SELECT * FROM table WHERE date BETWEEN '$start_date' AND '$end_date' AND id = 'x';

Tabii ki sadece strtotime kullanarak DB tarihleri ​​çekin ve zaman damgalarını append ederim - Tarih kullanılır nasıl değişir ()

Bu yardımcı olur umarım :)

Sen damgası tarih bölümünü ayıklamak için MySQL'in DATE() işlevini kullanabilirsiniz:

select ... from table ... where DATE(date_column) = '2010-01-25';

Eğer '2010-01-25 göndererek sorununuz varsa sadece tarih bölümü almak için parametre olarak Ymd 'PHP, sizinle PHP'nin date function kullanabilirsiniz'.

$d = date('Y-m-d', strtotime(...));

Yakından bakarak soru, size bu iki ihtiyacı olacak gibi görünüyor. İlk yalnızca tarih bölümünü almak için PHP'nin tarih işlevini kullanın ve sonra yalnızca bu kayıtları maç için MySQL'in tarihini kullanın.

PHP:

$timestamp_from_php = strtotime('December 25, 2009');

SQL:

select
    `fields`
from
    Table t
where
    date_format('Y-m-d', t.`datetime_field`) = date_format('Y-m-d', '$timestamp_from_php')

Neden MySQL biçimlendirilmiş tarihi içine strtotime() tarafından oluşturulan damgası dönüştürmek değil? Eğer elma elma karşılaştırarak bu şekilde.

$mysql_formatted_date = date("Y-m-d", $timestamp);

Edit: damgası veritabanı kullanılmakta aynı şeyi gerçekleştirmek için MySQL'in DATE_FORMAT () ise:

...    
WHERE DATE_FORMAT("y-m-d", timestamp_field) = $date_format