如何使用mysql查询将日期字符串转换为mysql日期格式以计算日期差异

时间:2017-07-10 04:05:40

标签: mysql

我有一个列,其中ddmmyy格式的日期存储(例如151216)。如何将其转换为yyyy-mm-dd格式(例如2016-12-15)以计算与当前日期的日期差异?我尝试使用DATE_FORMAT函数,但它不适合这个。

3 个答案:

答案 0 :(得分:4)

如果您想获得日期差异,可以在使用to_days()将字符串转换为日期后使用str_to_date()

select to_days(curdate()) - to_days(str_to_date(col, '%d%m%y'))

datediff()

select datediff(curdate(), str_to_date(col, '%d%m%y'))

timestampdiff()

select timestampdiff(day, str_to_date(col, '%d%m%y'), curdate())

答案 1 :(得分:3)

您可以使用此功能STR_TO_DATE()

STR_TO_DATE('151216', '%d%m%y')

查询看起来像:

select
    foo.bar
from
    foo
where
    STR_TO_DATE(foo.baz, '%d%m%y') < CURDATE()

注意:由于STR_TO_DATE()CURDATE()都返回日期对象,因此没有理由更改日期的实际显示格式。对于此功能,我们只需要格式化它。如果要在查询中显示它,可以使用类似

的内容
DATE_FORMAT(STR_TO_DATE(foo.baz, '%d%m%y'), '%Y-%m-%d')

为了得到差异,我们可以简单地减去时间

select 
    to_days(CURDATE() - STR_TO_DATE(foo.baz, '%d%m%y')) as diff
from
    foo

如果您只想选择具有指定数量差异的行,可以将整个to_days(...)位放在where子句中。

答案 2 :(得分:0)

SELECT STR_TO_DATE('151216', '%d%m%y') FROM `table`

使用此'%d%m%y'