我有一个很大的生日表,我想将其从 varchar 列转换为日期列。
表SQL是:
CREATE TABLE `birthdays` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`uid` bigint(20) DEFAULT NULL,
`birthday_date` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM
生日日期以两种方式之一存储:像“05/26/1994”或有时“03/14”这样的字符串(对于不想透露出生年份的人)。
创建另一个表并将生日存储在日期列中的最佳方法是什么?是否可以仅使用 MySQL(并避免使用 PHP 或其他中介)来完成此操作? p>
我在 MySQL 中找到了一个 STR_TO_DATE 函数。我应该使用它吗?
谢谢!
最佳答案
SELECT IF(birthday_date RLIKE '[0-9]{2}/[0-9]{2}/[0-9]{4}',STR_TO_DATE(birthday_date,'%m/%d/%Y'),STR_TO_DATE(birthday_date,'%m/%d'));
对于没有输入年份的行,这将导致类似 0000-03-14 的日期。您的服务器需要配置为允许无效日期(参见 http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html )
关于MYSQL:如何将包含日期的 VARCHAR 列转换为 DATE 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223971/