MySQL-将日期插入varchar,然后在查询时转换回日期

时间:2013-06-18 04:51:26

标签: php mysql date

我必须在mysql数据库中使用varchar字段来存储日期,我需要能够在此日期查询,就像它是一个日期字段一样。

  1. 日期应该以什么格式进入数据库? date()
  2. 如何将字符串转换为mysql中的日期?
  3. 谢谢!

5 个答案:

答案 0 :(得分:2)

正如我从您的评论中看到的那样,您正在使用wordpress,因此已经具有使用日期和您想要的格式的功能

LINK下方使用get_option并使用默认参数获取。像

<?php echo get_option( $option, $default ); ?> 

其中$default = 'date_format' - Default date format; set in General Options.

让我知道我是否可以帮助你。

答案 1 :(得分:1)

MySQL提供DATETIME数据类型。但CHARVARCHAR应该没问题,具体取决于您的需求。

对于格式,这是wiki的标准格式。 YYYY-MM-DD HH:MM:SS,仅限日期,应执行以下操作:YYYY-MM-DD

同时查看STR_TO_DATE功能。

以下是一个例子:

SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y')

将返回日期

'2013-05-01'

答案 2 :(得分:0)

答案 3 :(得分:0)

如果您只想查询数据,就好像是日期一样,您可以这样做......

  SELECT * FROM table1 WHERE DATE_FORMAT(STR_TO_DATE(yourColumn,'%m/%d/%Y %x:%x:%x'), '%Y-%m-%d 23:59:59') >= NOW()

这将选择日期大于或等于今天的所有readocrds

答案 4 :(得分:0)

在我看来没有问题。如果你想将日期存储为varchar,那就可以了。如果您想稍后使用带日期功能的数据,也可以。区别仅在于MySQL存储数据的方式。如果使用varchar存储日期,则需要更多内存,但也可以存储其他字符串。你可以自己试试:

mysql> SELECT YEAR("2013-06-18");
+--------------------+
| YEAR("2013-06-18") |
+--------------------+
|               2013 |
+--------------------+
1 row in set (0,00 sec)

您甚至可以将字符串与这样的日期进行比较:

mysql> SELECT DATE(NOW())="2013-06-18";
+--------------------------+
| DATE(NOW())="2013-06-18" |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0,00 sec)

如果您不信任此测试,则可以先将数据放入带有varchar类型字段的测试表中。我做了同样的结果。