【问题标题】:Disp command format in MATLABMATLAB中的disp命令格式
【发布时间】:2011-07-25 21:31:13
【问题描述】:

我正在为以下命令而苦苦挣扎。实际上,它是作为 SQL 语句执行的。我正在使用disp 命令打印出下面的语句。

Datevar = datestr(date,'mm/dd/yyyy') ; % 07/25/2011 

% Required command: execute SQLname @startdate = '7/25/2011'

% My current command:
disp([...
'execute SQLname ' ...
'@startdate = ' ''' Datevar ''' ...
])

我尝试了很多组合,但我无法正确地击中这个字符串:@startdate = '7/25/2011'。谢谢!

【问题讨论】:

  • Awright..this 终于起作用了:'@StartDate = ''' datestr(START_DATE) '''' 但是,我必须在这里使用 datestr func。有什么cmets/建议吗?

标签: matlab date


【解决方案1】:

引用错误,至少在您发布的示例代码中。 disp 调用的第三行连接两个单独的字符串,第二行包含文字“Datevar”。你想要这个,它将连接名为 Datevar 的变量的内容。

sql = [...
'execute SQLname ' ...
'@startdate = ''' Datevar '''' ...
];
disp(sql);

恕我直言,如果您使用 sprintf 构造此类简短查询,则它们的可读性更高,因为您不必区分内部引号和定界引号。

sql = sprintf('execute SQLname @startdate = ''%s''', Datevar);

如果您包含所获得的确切输出的示例,则更容易诊断此类问题。

【讨论】:

    【解决方案2】:

    您似乎不想要datestr 提供的前导零。没有用于返回非填充日期和月份值的日期说明符。您可以像这样使用DATEVECSPRINTF 创建您想要的字符串:

    >> 日期 = datevec('2011/07/25'); >> sprintf('执行 SQLname @startdate = ''%u/%u/%u''', date([2 3 1])) 答案= 执行 SQLname @startdate = '7/25/2011'

    【讨论】:

    • 谢谢 B3。前导0不是问题! SQL 可以忽略它。 disp/sprintf 问题也不重要,因为此命令最终会在游标连接中运行:exec ...。我使用 disp 只是为了调试我的语句。
    猜你喜欢
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多