我在其中一个数据库中为生日做了一个字符串到日期计算。这些年份是2位数格式,所以很明显这是我的代码:
STR_TO_DATE(dob,'%m/%d/%y')
然而,这是在许多记录上计算不正确的世纪。 IE:出生年份应该是1960年,而不是2060年。
这是基于日期格式的某种SQL标准,还是我可以手动指定一个世纪的截止值?还是其他建议?
编辑: 生日的例子是'09 / 23/62'。
返回格式为'2062-09-23'
答案 0 :(得分:3)
根据MySQL docs:
没有对错:因为你没有提供一个世纪,MySQL必须猜测。如果猜测不是你想要的,你将不得不提供你自己的世纪。可能的解决方案取决于您的数据库架构。
答案 1 :(得分:0)
作为mysql documentation,这是预期的行为
作为“0”到“99”范围内的1位或2位数字符串。价值观 范围'0'到'69'和'70'到'99'被转换为YEAR值 2000至2069年和1970年至1999年的范围。
答案 2 :(得分:0)
感谢大家的回复。这是我最终使用的解决方法:
IF(STR_TO_DATE(dob,'%m/%d/%y') > NOW(),SUBDATE(STR_TO_DATE(dob,'%m/%d/%y'), INTERVAL 100 YEAR)