将日期字符串转换为 mysql 日期时间字段

Posted

技术标签:

【中文标题】将日期字符串转换为 mysql 日期时间字段【英文标题】:convert date string to mysql datetime field 【发布时间】:2010-03-23 16:57:04 【问题描述】:

我有一堆日期格式为字符串的记录,例如 '04/17/2009'

我想将它们转换为 mysql 日期时间字段

我打算使用 foreach 循环来读取旧日期值并将新格式化的值插入到每条记录的新字段中

转换该字符串的最佳方法是什么...我认为 php 可能有办法自动完成它?

谢谢

【问题讨论】:

【参考方案1】:

首先,将字符串转换为时间戳

$timestamp = strtotime($string);

然后做一个

date("Y-m-d H:i:s", $timestamp);

【讨论】:

或立即执行:date("Y-m-d H:i:s", strtotime($string)); 日期返回一个字符串。这可以接受吗?【参考方案2】:

如果这些字符串当前在 db 中,您可以使用 mysql 的 STR_TO_DATE() 函数跳过 php。

我假设字符串使用month/day/year 之类的格式,其中monthday 始终为2 位,year 为4 位。

UPDATE some_table
   SET new_column = STR_TO_DATE(old_column, '%m/%d/%Y')

您可以使用other format specifiers支持其他日期格式。

【讨论】:

这将是一个很好的方法,可惜我的数据库技能不能胜任这项任务 +1。必须转换 fakenamegenerator.com 导出的 3000 个假名字,其中一个字段被命名为“生日”。将每个字段以 MM/DD/YYYY 格式存储为 VARCHAR 字段。这个答案非常有帮助。 一定是答案【参考方案3】:

像这样使用 DateTime::createFromFormat :

$date = DateTime::createFromFormat('m/d/Y H:i:s', $input_string.' 00:00:00');
$mysql_date_string = $date->format('Y-m-d H:i:s');

您可以将其调整为任何输入格式,而如果您使用 /,strtotime() 将假定您使用的是美国日期格式,即使您不是。

添加的 00:00:00 是因为 createFromFormat 将使用当前日期来填充缺失的数据,即:如果您不精确,它将使用当前的小时:分钟:秒而不是 00:00:00。

【讨论】:

1970 年前日期的不错选择【参考方案4】:
$time = strtotime($oldtime);

然后用date()把它变成正确的格式。

【讨论】:

【参考方案5】:

我假设我们正在讨论在 Bash 中执行此操作?

我喜欢使用 sed 将日期值加载到一个数组中,这样我就可以分解每个字段并用它做任何我想做的事情。以下示例假设输入格式为 mm/dd/yyyy...

DATE=$2
DATE_ARRAY=(`echo $DATE | sed -e 's/\// /g'`)
MONTH=(`echo $DATE_ARRAY[0]`)
DAY=(`echo $DATE_ARRAY[1]`)
YEAR=(`echo $DATE_ARRAY[2]`)
LOAD_DATE=$YEAR$MONTH$DAY

您可能还想阅读 linux 中的 date 命令。它可能非常有用: http://unixhelp.ed.ac.uk/CGI/man-cgi?date

希望对您有所帮助... :)

-瑞恩

【讨论】:

这是 PHP/MySQL。你偶尔检查一下标签;)【参考方案6】:
SELECT *
FROM table_name
WHERE CONCAT( SUBSTRING(json_date, 11, 4 ) ,  '-', SUBSTRING( json_date, 7, 2 ) ,  '-', SUBSTRING( json_date, 3, 2 ) ) >= NOW();

json_date ["05/11/2011"]

【讨论】:

以上是关于将日期字符串转换为 mysql 日期时间字段的主要内容,如果未能解决你的问题,请参考以下文章

如何将欧洲格式的字符串日期转换为有效的 mysql 日期格式?

mysql记录根据日期字段倒序输出

将访问日期时间类型转换为 mysql 类型

MySQL - 将日期字符串更改为日期类型?

如何将日期字符串转换为 mysql 日期格式以使用 mysql 查询计算日期差异

sql中如何将datetime日期转换成int日期