09/10/2018, 23:33

php cần sự júp đỡ gấp

chào các cao thủ.
Hãy júp em chút về kiểu ngày trong php - mysql
quả là thế này:

Trong mysql em có 1 trường với tên ngaygui có kiểu là char(10);
ví dụ: ngaygui="17/06/2007";

vấn đề của em là trong code php em muốn in ra các thông tin trong CSDL mà có ngày gửi (ngaygui) nhỏ hơn ngày hiện tại.
em đã cố gắng nhưng đều k dược

hãy júp em bằng đoạn code và câu lệnh sql mysql nhé.
cảm ơn .
sub viết 01:34 ngày 10/10/2018
chọn kiểu DATE bác ạ dang yyyy-mm-dd, nó sẽ tự so sánh được 2007-02-01 > 2007-01-30
pigeeken viết 01:41 ngày 10/10/2018
VD:
$sDate = '17/06/2007'; // Thay ngày lấy từ db vào đây
list($nDD, $nMM, $nYYYY) = split('/', $sDate);
$nDate = mktime(0, 0, 0, $nMM, $nDD, $nYYYY);

lấy $nDate mà so sánh với ngày hiện tại (dùng time() để lấy ngày hiện tại)

Thân !
pigeeken viết 01:44 ngày 10/10/2018
Theo mình bạn nên chọn kiểu int thay vì date . . .
amida viết 01:46 ngày 10/10/2018
viết hàm split nó ra. substr([var1],0,2) + substr([var2],0,2) -> chuyển sang numeric để so sánh
test0101 viết 01:40 ngày 10/10/2018
mình làm vầy mà chưa được:

function strtodate($sDate)
{
list($nDD, $nMM, $nYYYY) = split('/', $sDate);
$nDate = mktime(0, 0, 0, $nMM, $nDD, $nYYYY);
return $nDate;
}

trong file php mình:
$stime=time();

$str = "select accession_no, billdate,keyword, authors, from doccument_out where strtodate(billdate)<$stime";

trong đó billdate là trường kiểu char(10), ví dụ: "17/06/2007"

---> lỗi:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource....
You have an error in your SQL syntax.....
....version for the right syntax to use near '(billdate) DESC......
anhtuannd viết 01:34 ngày 10/10/2018
Hỡi ôi, sao không lấy time() của lúc gửi, nhét vào trường ngày gửi ở dạng int có phải là nhanh hơn không?
test0101 viết 01:39 ngày 10/10/2018
Về sắp xếp theo thời jan thì mình làm theo anhtuannd được rồi tuy nhiên mình vẫn mắc ở chỗ là chỉ in ra các bản ghi mà có ngaygui<ngày hiện tại thì chưa đc

mình làm vầy:

function strtodate($sDate)
{
list($nDD, $nMM, $nYYYY) = split('/', $sDate);
$nDate = mktime(0, 0, 0, $nMM, $nDD, $nYYYY);
return $nDate;
}

trong file php và mysql mình code:
$stime=time();

$str = "select accession_no, billdate from doccument_out where strtodate(billdate)<$stime";

trong đó billdate là trường kiểu char(10), ví dụ: "17/06/2007"


--> query bị lỗi --------
xem hộ cho mình nhé.
test0101 viết 01:40 ngày 10/10/2018
xem hộ mình câu lệnh mysql với bạn ơi
mrsinguyenus viết 01:35 ngày 10/10/2018
PHP Code:
function parseDay($day)
{
    
$myDay explode('/',$day);
    
$dateParse mktime(0,0,0,$myDay***91;1***93;,$myDay***91;0***93;,$myDay***91;2***93;);
    return 
$dateParse;

Dùng: parseDay($date);
Với $date = '17/05/2007';
Bài liên quan
0