2017-08-09 144 views
0

任何人都可以请帮我找出解决办法 - 我运行下面的查询MySQL的STR_TO_DATE函数返回NULL

SELECT STR_TO_DATE(order_date, '%d-%m-%Y') FROM `order_master` 

它返回NULL但是我有表2点中的行与值“今天”和'15 -08-2017',我想比较varchar字段与日期,尝试了很多,但不能成功。谢谢。

+1

记住“不工作”不是一个非常有用的诊断。 – tadman

+1

另外“今日”不是有效日期。 – tadman

+0

@FarhadHemmati - 我试过了,但它不起作用 –

回答

0
SELECT STR_TO_DATE('15-08-2017', '%d-%m-%Y') 

工作得很好。它产生DATE的值2017-08-15

SELECT STR_TO_DATE('Today', '%d-%m-%Y') 

显然没有。它产生NULL。

如果返回NULL,则可以使用类似这样的方法将当前日期替换为STR_TO_DATE()结果。

SELECT IFNULL(STR_TO_DATE('15-08-2017', '%d-%m-%Y'), CURDATE()) 

但是你最好的选择就是用这样的

SELECT IF('Today'=order_date, CURDATE(), STR_TO_DATE(order_date ,'%d-%m-%Y')); 

这将取代当前日期的Todayorder_date值,但留在原地的NULL值,其他畸形order_date值。

+0

谢谢你的回答,但问题是'order_date'字段的'整理',它是'utf32_general_ci',我将它改为'utf8_unicode_ci',现在它正在工作。 –

+0

请在您的答案中包含我的解决方案,它可能会帮助他人。非常感谢!! –