我必须在 mysql 数据库中使用 varchar 字段来存储日期,并且稍后我需要能够查询这个日期,就好像它是一个日期字段一样。
- 日期应该以什么格式进入数据库?
date()
? - 如何在mysql中将字符串转换为日期?
谢谢!
正如我从您的评论中看到的那样,您正在使用 wordpress,因此它已经具有使用日期和您想要的格式的功能
使用下面的LINK 来get_option
获取默认参数。喜欢
<?php echo get_option( $option, $default ); ?>
在哪里$default = 'date_format' - Default date format; set in General Options.
让我知道我是否可以帮助你更多。
MySQL
提供DATETIME数据类型。但是CHAR
还是VARCHAR
应该没问题,这取决于您的需要。
对于格式,这是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'
在我看来没有问题。如果您想将日期存储为 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 类型字段的测试表中。我做了同样的结果。
如果你只是想查询数据,就好像它是一个日期,你可以这样做......
SELECT * FROM table1 WHERE DATE_FORMAT(STR_TO_DATE(yourColumn,'%m/%d/%Y %x:%x:%x'), '%Y-%m-%d 23:59:59') >= NOW()
这将选择日期大于或等于今天的所有 readocrd