mysql的select自动将字符串转成date,但是insert和select一块用的时候,就不会自动转换

1 在select中,mysql自动将字符串转成date类型

1.1 select中

复制代码
SELECT RATE.RATE_TYPE
      ,'2022-01-13' AS ACCEPT_OFFER_DATE
      ,RATE.COMMERCIAN_UNIT
      ,RATE_NUMERATOR
      ,RATE_DENOMINATOR
      , CAST( RATE_NUMERATOR AS DECIMAL(12,6) ) / RATE_DENOMINATOR AS RATE
FROM (
SELECT 'YTD招聘完成率' AS RATE_TYPE
  , 'China' AS COMMERCIAN_UNIT
  , SUM( CASE WHEN A.WHETHER_FILL_UP_ONTIME IN ( '按时填补','超时填补' ) THEN A.CNT END ) AS RATE_NUMERATOR
  , SUM( CASE WHEN A.WHETHER_FILL_UP_ONTIME IN ( '按时填补','超时填补','超时未填补' ) THEN A.CNT END ) AS RATE_DENOMINATOR
FROM ADS_RCM_EXECUTION_dev A
WHERE 1 = 1 

-- AND A.ACCEPT_THE_OFFER_TIME >= MAKEDATE(STR_TO_DATE('2022-01-13','%Y-%m-%d'),1) 
AND A.ACCEPT_THE_OFFER_TIME >= MAKEDATE('2022-01-13',1) 
AND A.ACCEPT_THE_OFFER_TIME <= '2022-01-13') RATE
;
复制代码

 

 

1.2  加入inser后就报错了

复制代码
INSERT INTO ADS_RCM_EXECUTION_BY_BU_ROLLING_dev
(
    RATE_TYPE
  , ACCEPT_THE_OFFER_TIME
  , COMMERCIAN_UNIT
  , RATE_NUMERATOR
  , RATE_DENOMINATOR
  , RATE
)
SELECT RATE.RATE_TYPE
      ,'2022-01-13' AS ACCEPT_OFFER_DATE
      ,RATE.COMMERCIAN_UNIT
      ,RATE_NUMERATOR
      ,RATE_DENOMINATOR
      , CAST( RATE_NUMERATOR AS DECIMAL(12,6) ) / RATE_DENOMINATOR AS RATE
FROM (
SELECT 'YTD招聘完成率' AS RATE_TYPE
  , 'China' AS COMMERCIAN_UNIT
  , SUM( CASE WHEN A.WHETHER_FILL_UP_ONTIME IN ( '按时填补','超时填补' ) THEN A.CNT END ) AS RATE_NUMERATOR
  , SUM( CASE WHEN A.WHETHER_FILL_UP_ONTIME IN ( '按时填补','超时填补','超时未填补' ) THEN A.CNT END ) AS RATE_DENOMINATOR
FROM ADS_RCM_EXECUTION_dev A
WHERE 1 = 1 

-- AND A.ACCEPT_THE_OFFER_TIME >= MAKEDATE(STR_TO_DATE('2022-01-13','%Y-%m-%d'),1) 
AND A.ACCEPT_THE_OFFER_TIME >= MAKEDATE('2022-01-13',1) 
AND A.ACCEPT_THE_OFFER_TIME <= '2022-01-13') RATE
;
复制代码

 

 

 

 

1.3 手动将MAKEDATE函数中字符串转成date,

复制代码
INSERT INTO ADS_RCM_EXECUTION_BY_BU_ROLLING_dev
(
    RATE_TYPE
  , ACCEPT_THE_OFFER_TIME
  , COMMERCIAN_UNIT
  , RATE_NUMERATOR
  , RATE_DENOMINATOR
  , RATE
)
SELECT RATE.RATE_TYPE
      ,'2022-01-13' AS ACCEPT_OFFER_DATE
      ,RATE.COMMERCIAN_UNIT
      ,RATE_NUMERATOR
      ,RATE_DENOMINATOR
      , CAST( RATE_NUMERATOR AS DECIMAL(12,6) ) / RATE_DENOMINATOR AS RATE
FROM (
SELECT 'YTD招聘完成率' AS RATE_TYPE
  , 'China' AS COMMERCIAN_UNIT
  , SUM( CASE WHEN A.WHETHER_FILL_UP_ONTIME IN ( '按时填补','超时填补' ) THEN A.CNT END ) AS RATE_NUMERATOR
  , SUM( CASE WHEN A.WHETHER_FILL_UP_ONTIME IN ( '按时填补','超时填补','超时未填补' ) THEN A.CNT END ) AS RATE_DENOMINATOR
FROM ADS_RCM_EXECUTION_dev A
WHERE 1 = 1 

AND A.ACCEPT_THE_OFFER_TIME >= MAKEDATE(STR_TO_DATE('2022-01-13','%Y-%m-%d'),1) 
-- AND A.ACCEPT_THE_OFFER_TIME >= MAKEDATE('2022-01-13',1) 
AND A.ACCEPT_THE_OFFER_TIME <= '2022-01-13') RATE
;
复制代码

 

 

 

 

 

 

 

 

posted @   linzm14  阅读(215)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示