使用php,如何转换char字段的所有行,例如;“2010年11月19日”;到日期字段?
为了使用phpmyadmin将日期列导入mysql,我将该字段定义为char字段 现在,mysql表中的日期如下所示:使用php,如何转换char字段的所有行,例如;“2010年11月19日”;到日期字段?,php,mysql,Php,Mysql,为了使用phpmyadmin将日期列导入mysql,我将该字段定义为char字段 现在,mysql表中的日期如下所示: ID | Name | DateArriving 1 | bill | 11/19/10 2 | tom | 12/1/10 等等 我希望DateArriming字段被格式化为实际日期,这样我就可以进行某些查询,例如“谁将在下周到达” 我想知道PHP代码如何进行这种转换 多谢各位 我使用的最终解决方案附录: 最后,我结合了几个答案: 使用strotime可以将日期转换为
ID | Name | DateArriving
1 | bill | 11/19/10
2 | tom | 12/1/10
等等
我希望DateArriming字段被格式化为实际日期,这样我就可以进行某些查询,例如“谁将在下周到达”
我想知道PHP代码如何进行这种转换
多谢各位
我使用的最终解决方案附录:
最后,我结合了几个答案:
使用
strotime
可以将日期转换为时间
然后传递time-to-date函数,并根据需要格式化它
date('l F Y h:i:s A', $timestamp);
请参见上面链接中的示例
使用date_diff或diff进行比较如果要使用日期时间列类型作为日期,可以
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();
请看。现在,我不是大城市的SQL专家,但我会这样做:
ID | Name | DateArriving
1 | bill | 11/19/10
2 | tom | 12/1/10
您没有使用
DATETIME
字段的任何原因?除了格式化之外?如果我有问题的话,我在开始时没有使用DATETIME字段的原因是,在执行.csv导入之前,指定DATETIME字段似乎不适用于EXCEL样式的日期--日期值都显示为0000-00-00:00:00。谢谢,一旦我得到所有设置的数据,我将尝试这段代码。最后,我使用了几个答案的组合:$select_trips=“select*FROM trips,其中STR_TO_DATE(datedefating,'%m/%d/%Y')介于NOW()和NOW()之间+间隔1周”;谢谢
SELECT STR_TO_DATE(DateArriving, '%m/%d/%Y') FROM TABLE
$select_trips = "SELECT * FROM trips
WHERE STR_TO_DATE(DateDeparting, '%m/%d/%Y')
BETWEEN NOW() AND NOW() + INTERVAL 1 WEEK