MongoDB BI Connector:如何在select语句中为变量赋值

时间:2018-02-22 06:23:31

标签: mongodb virtual-table

我需要生成虚拟表并用日期值范围填充它。

以下查询通常在MySql中执行:

SELECT DATEID, STR_TO_DATE(DateValue, '%Y-%m-%d %H:%i:%s') AS DateValue FROM(
 SELECT CONVERT(DATE_FORMAT(ADDDATE(@day, INTERVAL @row1+1 DAY),'%Y%m%d'), UNSIGNED) AS DATEID, 
                                    @day := ADDDATE(@day, INTERVAL @row1+1 DAY) AS DateValue, 
                                    @row2 := @row2 + 1 AS row2
                                    FROM `INFORMATION_SCHEMA`.COLUMNS a, 
                                        (SELECT @row1 := 0) r, 
                                        (SELECT @row2 := 0) r2, 
                                        (SELECT @day := DATE_SUB('2000-01-01', INTERVAL 1 DAY)) d 
                                WHERE @row2 <= DATEDIFF('2020-01-01', '2000-01-01') ) as Result

结果: enter image description here

如何使用MongoDB BI Connector获得完全结果?

  

问题是':='赋值语法不起作用。

mongosqld在localhost:3307上开始

 public IDataReader ExecuteReader()
    {
        try
        {
            var connection = new MySqlConnection("Server=localhost;Port=3307;Database=masterDb;");

            var sqlQuery = @"SELECT DATEID, STR_TO_DATE(DateValue, '%Y-%m-%d %H:%i:%s') AS DateValue FROM(
                                SELECT CONVERT(DATE_FORMAT(ADDDATE(@day, INTERVAL @row1+1 DAY),'%Y%m%d'), UNSIGNED) AS DATEID, 
                                    @day := ADDDATE(@day, INTERVAL @row1+1 DAY) AS DateValue, 
                                    @row2 := @row2 + 1 AS row2
                                    FROM `INFORMATION_SCHEMA`.COLUMNS a, 
                                        (SELECT @row1 := 0) r, 
                                        (SELECT @row2 := 0) r2, 
                                        (SELECT @day := DATE_SUB('2000-01-01', INTERVAL 1 DAY)) d 
                                WHERE @row2 <= DATEDIFF('2020-01-01', '2000-01-01') ) as Result";

            if (connection.State != ConnectionState.Open)
                connection.Open();

            var command = connection.CreateCommand();

            command.CommandText = sqlQuery;
            command.CommandType = CommandType.Text;
            command.CommandTimeout = ConnectionConstants.DefaultCommandTimeout;

            return command.ExecuteReader();

        }
        catch (Exception ex)
        {
            throw new ConnectorException(Sections.QueryExecution, ex.Message);
        }
    }

如果输入值为 startDate =“2000-01-01” endDate =“2000-01-05”

输出表格应为: enter image description here

0 个答案:

没有答案