php - 处理格式错误的时间

标签 php mysql sql formatting

我公司的网站上有一个页面,其中包含开始时间的文本输入字段。现在他们需要我将表单转换为使用时代选择。因为到目前为止,插入数据库中的时间来自文本输入,所以数据库中的行没有共享时间格式约定。

例如:

mysql> SELECT classtime FROM classes LIMIT 10;
+-----------+
| classtime |
+-----------+
| 3PM       |
| 9:30am    |
| 9:00am    |
| 9:30am    |
| 3:00pm    |
| 10:00am   |
| 3:00      |
| 10:30     |
| 11:30     |
| 9         |
+-----------+
10 rows in set (0.02 sec)

这些只是大约 45,000 行中的 10 行。

我正在尝试编写处理逻辑来显示原始数据以及新的限制格式数据。显然,我需要编写一个条件来区分两者,但我似乎想不出一个好方法来解决它。由于新数据在插入数据库之前将使用 strtotime() 进行转换,因此我最初的想法是编写一个条件来检查从数据库检索的数据是否为数字,然后相应地显示.

唯一的问题是许多行已经包含带有数字格式时间的时间字段:

mysql> SELECT COUNT(*) FROM classes WHERE classtime REGEXP '^[0-9]*$';

+----------+
| count(*) |
+----------+
|      273 |
+----------+
1 row in set (0.07 sec)

如您所见,此方法行不通。有人有什么建议吗?提前致谢。

编辑(附加信息): 许多字段还包含以下值:“12:00 PM - 1:00 PM”或“3 PM 至 4 PM”等。

最佳答案

您可以使用 PHP 中的 strtotime() 函数来转换其中的大部分。

$new_time = date('h:i', strtotime($old_time));

当然,“h:i”可以是您想要的任何格式。

关于php - 处理格式错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026038/

相关文章:

varchar 列查询问题中的 Mysql 数字

sql - 是否可以从同一SQL语句中的多个表中删除?

mysql - SQL 查询来比较个人平均值和组平均值

php - 在几列上插入查询会出错

mysql - MySQL 排除之间的条目

php - 假设数据库已建立索引,如何使网页上的大型数据表加载速度更快?

php - MySQL 插入查询失败,没有错误

sql - 将 SQL FLOAT 转换为 SQL INT,丢失数据

php - 使用韩国文件名上传的文件无法正确存储到 mysql 数据库中

php - 您的 SQL 语法有误;查看手册...第6行