【发布时间】:2014-01-09 16:39:16
【问题描述】:
我的公司在其网站上有一个页面,其中包含开始时间的文本输入字段。现在他们需要我将表单转换为使用时间选择。因为直到现在,插入数据库的时间都来自文本输入,所以数据库中的行没有共享时间格式约定。
例如:
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 to 4 PM”等值。
【问题讨论】:
-
那么新格式是什么样的?您基本上展示了四种不同类型的当前格式,因为这些都是您正在处理的?
标签: php mysql sql formatting