【问题标题】:get current date in stored procedure in mysql在mysql的存储过程中获取当前日期
【发布时间】:2011-07-06 17:51:09
【问题描述】:

我在mysql中创建了一个存储过程

DELIMITER //
 CREATE PROCEDURE simpleproc ()
    BEGIN

     SELECT YEAR(dtm), 
            WEEK(dtm), 
            b.x_title, 
            COUNT(b.x_id)  
       INTO OUTFILE '/appdata/reports01/result.csv'  
            FIELDS TERMINATED BY ',' 
            OPTIONALLY ENCLOSED BY '"'    
            LINES TERMINATED BY '\n'  
       FROM tbla a 
       JOIN tblb b ON b.x_id = a.x_id 
      WHERE plan_grp_id IN (10031, 10034) 
        AND dtm > '20110101' 
   GROUP BY YEAR(dtm), WEEK(dtm), a.x_id;

  END //


delimiter ;

我需要做两件事

  1. INTO OUTFILE '/appdata/reports01/result.csv' 必须类似于“INTO OUTFILE '/appdata/reports01/result-current-timestamp.csv'
  2. dtm > '20110101' 必须是 dtm > CURDATE() + 0 。

这个:

SELECT  CURDATE() + 0

...让我得到格式“20110101”,但我不能在像dtm > CURDATE() + 0这样的查询中使用它

【问题讨论】:

  • 不确定文件名。至于第二个“东西”,dtm 是什么类型?您是否尝试过简单的dtm > CURDATE()
  • 是的。我试过了,但由于某种原因它不起作用。我找到了解决这个问题的方法.. dtm > (SELECT CURDATE() + 0 )。但无法获取文件名时间戳..

标签: mysql sql stored-procedures


【解决方案1】:

使用变量。

DECLARE outfile_name varchar(300);

获取当前时间戳并将其附加到字符串的其余部分。 使用 INTO 关键字将 SELECT 语句的输出转换为变量。 使用 CONCAT() 连接 2 个字符串。

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 2012-07-28
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多