10/10/2018, 10:32

Giúp mình chuyển định dạng ngày tháng Và Tính số ngày

Nhờ anh/em chỉ giúp tớ,cách mình chuyển định dạng của ngày tháng(mặc định yyyy/mm/dd => dd/mm/yyyy)
- Cách mình tính ra số ngày của một quảng cáo( 12/05/2010 đến 12/06/2010 là 30(31) ngày ????). Lấy ngày 12/06/2010 - 12-05/2010 ra số ngày....
Mình tìm trên mạng mà không thấy như ý mình nên tớ nhờ anh/em chỉ giúp mình với!

PHP Code:

CREATE TABLE `quangcaoslide` (
`id` int(10) unsigned NOT NULL auto_increment COMMENT 'Ma Quang Cao',
`ten` varchar(255) collate utf8_unicode_ci NOT NULL COMMENT 'Ten DNghiep',
`url` varchar(255) collate utf8_unicode_ci NOT NULL COMMENT 'File Quang Cao',
`iddnghiep` int(10) NOT NULL,
`luotxem` int(10) NOT NULL COMMENT 'So Lan Lick',
`daypost` datetime NOT NULL default '0000-00-00 00:00:00' COMMENT 'Ngay dang ky',
`dayend` datetime NOT NULL default '0000-00-00 00:00:00' COMMENT 'Ngay Ket Thuc',
`songay` int(10) NOT NULL COMMENT 'So Ngay Dang Ky Dua Vao DayPost & DayEnd',
`xuatban` tinyint(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
sacroyant viết 12:38 ngày 10/10/2018
Bạn cần tìm hiểu thêm về hàm date. Trong database thì nên lưu ngày tháng dạng unix timestamp cho dễ tính toán.
thuyduongcd viết 12:40 ngày 10/10/2018
1.
Code:
SELECT DATE_FORMAT(daypost,"%d/%m/%Y") FROM quangcaoslide ...
2.
Code:
SELECT DATEDIFF(dayend,daypost) FROM quangcaoslide ...
Góp ý thêm về cách tổ chức DB:
Trong 2 cột dayend và songay, nên bỏ 1 cái. Vì dựa vào daypost và dayend có thể tính ra songay hoặc dựa vào daypost và songay có thể tính ra dayend.
hoangnamquan viết 12:47 ngày 10/10/2018
hình như thiếu 1 tý thì fải"SELECT DATEDIFF(dd,dayend,daypost) FROM quangcaoslide '
Thế Giới Phẳng viết 12:45 ngày 10/10/2018
Trong csdl mình để cho nó kiểu int.

Mình dùng:
$date = gmdate("d/m/Y", $row['manga_add_date'] + 7*3600); để show ra.

Trong csdl đã có dữ liệu dạng:1275238573 kiểu int(11) NOT NULL

Nhưng tại sao lúc show ra vẫn là: 01/01/1970 vậy các bạn
thuyduongcd viết 12:45 ngày 10/10/2018
Được gửi bởi hoangnamquan
hình như thiếu 1 tý thì fải"SELECT DATEDIFF(dd,dayend,daypost) FROM quangcaoslide '
Xem lại cú pháp hàm DATEDIFF
http://dev.mysql.com/doc/refman/5.4/...ction_datediff

Trong csdl mình để cho nó kiểu int.

Mình dùng:
$date = gmdate("d/m/Y", $row['manga_add_date'] + 7*3600); để show ra.

Trong csdl đã có dữ liệu dạng:1275238573 kiểu int(11) NOT NULL

Nhưng tại sao lúc show ra vẫn là: 01/01/1970 vậy các bạn
Thử echo cái $row['manga_add_date'] xem kết quả truy vấn có đúng như trong DB không. Nhiều khả năng kết quả là null
Thế Giới Phẳng viết 12:33 ngày 10/10/2018
Echo nó rồi. Nó lại chẳng hiện ra gì luôn bạn ạ. Help me!
ngoc_viet08 viết 12:44 ngày 10/10/2018
nó chẳng hiện gì thì query ko trả về dữ liệu , hoặc có dữ liệu về mà bác xử lý ko đúng . thế thôi .
Thế Giới Phẳng viết 12:33 ngày 10/10/2018
Hix, đây nè bác:

Đây là đoạn show dữ liệu ở cột:
$date = gmdate("d/m/Y", $row['posts_date'] + 7*3600);

Đây là đoạn nhập form:

$date=time();
$name=$_POST['name'];
$sql = "INSERT INTO manga(posts_name, posts_date) VALUES ('$name', '$date')";

Nó có sai đâu, vẫn insert ra 11 số: 1275238573, insert tiếp thì nó vẫn ra 11 số với giá trị khác

Có bác nào giúp em với!

[=========> Bổ sung bài viết <=========]

Giúp mình cái. Mình đang cần gấp mà!
thuyduongcd viết 12:33 ngày 10/10/2018
Học lại kiến thức mySQL đi. Gọi câu Insert thì lấy đâu ra dữ liệu mà show
Bài liên quan
0