2012-02-28 10 views
13

Potrzebuję uzyskać zapisy, które są wstawiane w ciągu ostatnich 24 godzin. Przeczytałem o tym i dostałem, że muszę użyć typu DATETIME w mojej kolumnie daty MySQL.
Ale moim problemem jest nie wiem, jak wygenerować datę dla MySQL DATETIME typu z PHP?
Jak mogę to zrobić? Z góry dziękuję.Jak wygenerować datę dla typu DATETIME MySQL z PHP?

+3

Biorąc pod uwagę Twój wzmianka typu DATETIME, ważne jest, aby pamiętać, że sklepy MySQL nic poza ciągiem w specjalnym formacie. Tworzysz ciąg PHP w formacie YYYY-MM-DD HH: ii: ss i jesteś gotowy do pracy. I tak, zdaję sobie sprawę, że to pytanie ma wiele lat, ale zakładam, że przyszli czytelnicy znajdą tu hasło zawierające "typ DATETIME" i uznają te informacje za użyteczne. – Patrick

Odpowiedz

37

Wystarczy

$mysql_date_now = date("Y-m-d H:i:s"); 

Ponieważ DATETIME w mysql jest YYYY-MM-DD HH:ii:ss

9

Jeśli szukasz po prostu na drodze do wygenerowania datetime wstawić do pola datetime po prostu użyć następującego kodu

$datetime = date('Y-m-d H:i:s') ; 

lub do bezpośredniego sql

INSERT INTO {TABLE} ({DATETIME}) VALUES (NOW()) 

Spowoduje to utworzenie datę, która wygląda jak

2012-02-28 16:44:25 

Jeśli szukasz zapytanie dostać ostatnie 24 godzin używać

SELECT * FROM tablename WHERE date_field > NOW() - interval 1 day 
+0

Po prostu chcę dodać to tutaj - Wierzę, że jeśli użyjesz funkcji 'sql now()', utworzy ona czas zależny od miejsca serwera, a nie od tego, gdzie jesteś. Jeśli serwer znajduje się w innym kraju lub regionie z inną strefą czasową, użyje strefy czasowej, w której znajduje się serwer, zamiast własnego. – James111

+0

James111: zależy to od strefy czasowej serwera. Jeśli strefa czasowa serwera może być ustawiona na aktualną lokalizację, będzie w porządku. – bretterer

1

Istnieje dwa sposoby postępowania:

  1. Użyj tekstową reprezentację - coś takiego:

    <?php 
        $year=2012; $month=2; $day=27; 
        $hour=22; $minute=44; $second=58; 
    
        $sql="SELECT something FROM something WHERE datecolumn>='$year-$month-$day $hour:$minute:$second'"; 
    ?> 
    
  2. Czy to bezpośrednio w SQL

    SELECT something FROM something WHERE datecolumn >= DATE_SUB(NOW(), INTERVAL 1 DAY); 
    
+0

Nie wiem, dlaczego redaktor nalega na numerację 1. i 1., powinna wynosić 1. i 2. –

Powiązane problemy