时间函数DAY()在MySql语句中不生效的问题

题目描述

有两张表a,b.要将b表中RQ字段迁移到a表中的rq字段.迁移前需要对RQ字段进行日期格式的判断:如果不符合日期格式(如:20130229,2010431,20127192)将它们转换为'20000101'再向a传值.
遇到的问题是,day()这个函数在上述语句中不生效.

相关代码

 REPLACE INTO a(rq) 
 SELECT 
 IF((DAY(RQ)IS NULL),'20000101',RQ)
 FROM b;

你期待的结果是什么?

想知道为什么会不生效.或者有什么方法能简单对日期格式进行校验

阅读 1.5k
1 个回答

可以把要匹配的日期格式放到一张临时表中,例如(tmp)
image.png
再用b表与其连接,如果能连接上说明匹配,即可以转换为'20000101',否则用原值。

SELECT
IF( t.id IS NULL, b.rq, '20000101' ) 
FROM b
LEFT JOIN `tmp` t 
ON DATE_FORMAT( b.eq, '%Y%m%d' ) = DATE_FORMAT( t.time, '%Y%m%d' );
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题