为了使用phpmyadmin将一列日期导入mysql,我将该字段定义为char字段。
所以现在日期在mysql表中如下所示:
ID | Name | DateArriving
1 | bill | 11/19/10
2 | tom | 12/1/10
等......
我希望将DateArriving字段格式化为实际日期,以便我可以执行某些查询,例如“谁将在下周到达”。
我想了解PHP代码应如何进行此转换的指导。
谢谢。
我使用的附加最终解决方案:
最后,我结合使用了几个答案:
$select_trips = "SELECT * FROM trips WHERE STR_TO_DATE(DateArriving, '%m/%d/%Y') BETWEEN NOW() AND NOW() + INTERVAL 1 WEEK";
答案 0 :(得分:2)
使用strtotime
您可以将日期转换为时间
http://php.net/manual/en/function.strtotime.php
然后传递该时间到期日函数并根据需要格式化
date('l F Y h:i:s A', $timestamp);
请参阅上面链接中的示例
使用date_diffor diff进行比较
答案 1 :(得分:1)
如果您使用DATETIME
列类型作为日期,则可以执行
SELECT Name, DateArriving
FROM Arrivals
WHERE DateArriving BETWEEN NOW() AND NOW() + INTERVAL 2 WEEK;
并且根本不需要在PHP中进行任何转换。
使用DATETIME
列还允许您为查询参数传递不同的日期格式,因此在对列执行语句时,您不依赖于特定格式,例如
// create a new DB connection and prepare statement
$db = new mysqli('127.0.0.1', 'foo', 'secret', 'dbname');
$stmt = $db->prepare(
'SELECT Name FROM Arrivals WHERE DateArriving BETWEEN ? AND ?');
// bind the query params in two different time formats
$startDate = date('Y/m/d');
$endDate = date('Y-m-d', strtotime('+2 weeks'));
$stmt->bind_param('ss', $startDate, $endDate);
// execute the query and fetch the first result
$stmt->execute();
$stmt->bind_result($result);
$stmt->fetch();
printf ("%s\n", $result);
$stmt->close();
答案 2 :(得分:1)
SELECT STR_TO_DATE(DateArriving, '%m/%d/%Y') FROM TABLE
答案 3 :(得分:0)
现在,我不是一个大城市的SQL大师,但我会这样做:
使用您真正想要的结构创建一个新表
逐行读取现有表中的数据,将日期转换为MySQL可以理解的格式,然后将其插入新表中
删除原始表
将新表重命名为现有代码所需的内容
感谢$ DEITY文本日期是一致的格式而不是用户提供的不兼容区域变化的混搭(如d / m / yyyy与m / d / yyyy混合)
< / LI> 醇>答案 4 :(得分:0)
$select_trips = "SELECT * FROM trips
WHERE STR_TO_DATE(DateDeparting, '%m/%d/%Y')
BETWEEN NOW() AND NOW() + INTERVAL 1 WEEK