【发布时间】:2011-06-15 00:59:03
【问题描述】:
我正在尝试插入一个日期,比如说 CURDATE() 到一个 sql DateTime 字段。
我的日期格式为:28/01/2008
当我尝试将它插入 SQL 时,我得到的只是零。
那么如何正确转换呢?
【问题讨论】:
我正在尝试插入一个日期,比如说 CURDATE() 到一个 sql DateTime 字段。
我的日期格式为:28/01/2008
当我尝试将它插入 SQL 时,我得到的只是零。
那么如何正确转换呢?
【问题讨论】:
$new_date = date('Y-m-d', strtotime($old_date));
strtotime() 将尝试解析一个字符串(在这种情况下为$old_date)并了解它是什么日期。它期望得到一个包含英文日期格式或英文文本日期时间描述的字符串。成功时,它将返回 Unix timestamp(自 1970 年 1 月 1 日以来的秒数)。现在我们从那个字符串中得到了一个时间点。
date() 然后会将这个先前获得的时间点转换为第一个参数中描述的格式,在上面的示例中是'Y-m-d'
Y — 年份的完整数字表示,4 位数字m — 月份的数字表示,前导零d — 日期,2 位数字,前导零- — 字面意思是减号这是您可以在格式参数字符串中使用的full list 字符
【讨论】:
我正在尝试插入一个日期,比如说 CURDATE() 到 sql DateTime 字段。
$timestamp = strtotime($old_date);
$mydate = date('Y-m-d H:i:s', $timestamp);
【讨论】:
由于您使用的是欧洲日期表示法 (dd/mm/yyyy),因此 strtotime 函数将返回 0(然后将在 date 之前将其转换为 1970-01-01 ) 如果您不使用 - 或 . 作为分隔符。
所以如果你想使用 strtotime,那么你将不得不稍微改变你的日期字符串:
$olddate = '28/01/2008';
$newdate = strtotime(str_replace('/', '-', $olddate));
$newdate 现在应该包含 '2008-01-28'...
【讨论】:
【讨论】:
我正在尝试插入一个日期,比如说 CURDATE() 到一个 sql DateTime 字段。
为什么不直接使用MySQL函数呢?
insert tbl (id, other, datecol)
values(NULL, 'abcdef', CURDATE());
我的日期格式为:28/01/2008
如果它不是您想要的 CURDATE(),而是 dd/mm/yyyy 格式的 PHP 变量,那么请参阅 MySQL man page 了解如何格式化文字。安全格式是YYYY-MM-DD 和YYYYMMDD 没有时间。
$date = '28/01/2008';
$query = "insert tbl (id, other, datecol)
values(NULL, 'abcdef', '" . date('Ymd', strtotime($date)) . "');";
注意:yyyymmdd 在 SQL Server 中也是有效的格式。
【讨论】: