2014-03-03 2 views
0

현재 날짜의 데이터 만 반환하고 종료 시간과 시작 시간을 사용해야하는 쿼리를 작성하고 있습니다.MySQL의 PHP 쿼리의 현재 및 이전 날

이와 비슷한 것.

$endtime = date ("Y-m-d H:i:s"); 
$starttime = date ("Y-m-d H:i:s") - 1; // Not working.. 


$sql = "select * from tbl_order where transdate between $starttime and $endtime"; 

도와 줄 수 있습니까?

RJ 당신이 달성하려고하지만 지난 24 시간 (주 : 마지막 날)로부터 주문을 얻으려면 무엇을

+2

'date (transdate) = CURDATE()'?? –

+0

도 참조하십시오. http://stackoverflow.com/a/16372608/689579 – Sean

+0

@ 단일 시점의 대각선?!,!!?!? –

답변

0

100 % 확인이 할 것 :

$endtime = date ("Y-m-d H:i:s"); 
$starttime = date ("Y-m-d H:i:s", (time() - (60*60*24))); 

순수한 SQL을 사용하여이 작업을 수행하는 것이 깔끔한 것이라고 말할 수 있습니다.

+1

이것이 원하는 경우 pure SQL 버전은 다음과 같습니다. 'transdate> NOW() - interval 1 day' –

0

between 키워드는 문자열이 아닌 날짜 값에서 작동합니다. 내가 열이 타임 스탬프로 정의되기 때문에 (MySQL의) 날짜 record_ts을 변환해야

<?php 
$jan = '2014-01'; 
$feb = '2014-02'; 
$sql = "select record_ts from table where date(record_ts) 
     between str_to_date('$jan', '%Y-%m') 
      and str_to_date('$feb', '%Y-%m'); 
     "; 
?> 

공지 사항, 나는 또한 날짜 문자열을 변환해야합니다.

. . .

Carl Maskham, 귀하의 의견은 최신 버전의 MySQL에서 유효 할 수 있습니다.

mysql> select record_ts from table where date(record_ts) 
     between '2014-01' 
      and '2014-02' ; 
Empty set, 2 warnings (0.01 sec) 

mysql> select record_ts from table where date(record_ts) 
     between str_to_date('2014-01', '%Y-%m') 
      and str_to_date('2014-02', '%Y-%m'); 
(...) 
1119 rows in set (0.01 sec) 

$ mysql --version 
mysql Ver 14.14 Distrib 5.1.70, for pc-linux-gnu (x86_64) using readline 5.1 
+0

[다른 것부터] (https://dev.mysql.com /doc/refman/5.0/en/comparison-operators.html#operator_between) 사이에 임의의 숫자 값과 단일 문자열이 작동합니다. –