首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在date_format中替换sprintf中的多个%s?

如何在date_format中替换sprintf中的多个%s?
EN

Stack Overflow用户
提问于 2019-02-05 16:15:26
回答 1查看 215关注 0票数 0

我正在尝试用给定的日期替换查询中的所有%s。但它抛出了我的错误,在Date_format.fcst_date中的%s被正确地替换了。请帮帮忙

代码语言:javascript
复制
    $day1 = date('Y-m-d');
    $day2 = date('Y-m-d', strtotime("+1 days"));
    $day3 = date('Y-m-d', strtotime("+2 days"));
    $day4 = date('Y-m-d', strtotime("+3 days"));
    $day5 = date('Y-m-d', strtotime("+4 days"));
    $day6 = date('Y-m-d', strtotime("+5 days"));
    $day7 = date('Y-m-d', strtotime("+6 days"));
    $day8 = date('Y-m-d', strtotime("+7 days"));
    $day9 = date('Y-m-d', strtotime("+8 days"));
    $day10 = date('Y-m-d', strtotime("+9 days"));
    $query = sprintf('SELECT blk_id,blk_name,fcst_date,temp_max,max_temp,date,temp_stn_block.stn_id FROM temp_stn_block RIGHT JOIN temp_stn_normals ON temp_stn_block.stn_id=temp_stn_normals.stn_id INNER JOIN block_imd_gfs_forecast ON blk_id=block_id JOIN block_s ON block_s.id=blk_id WHERE DATE_FORMAT(date, "%%m-%%d") IN DATE_FORMAT("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s", "%%m-%%d") AND fcst_date IN (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", $day1, $day2, $day3, $day4,$day5, $day6, $day7,$day8,$day9,$day10, $day1, $day2, $day3, $day4,$day5, $day6, $day7,$day8,$day9,$day10);
    $res = $this->db->query($query);
    return $res->result();
EN

回答 1

Stack Overflow用户

发布于 2019-02-05 17:24:51

我宁愿使用带有名称param的预准备语句来实现这一点,只是为了使代码更具可读性。但是,您必须更新您的codeigniter数据库配置以使用PDO驱动程序。

对于sprintf,仅使用编号占位符:

代码语言:javascript
复制
$qry_str = 'SELECT 
 blk_id,blk_name,fcst_date,temp_max,max_temp,date,temp_stn_block.stn_id 
 FROM temp_stn_block 
 RIGHT JOIN temp_stn_normals 
   ON temp_stn_block.stn_id=temp_stn_normals.stn_id 
 INNER JOIN block_imd_gfs_forecast 
   ON blk_id=block_id JOIN block_s ON block_s.id=blk_id 
 WHERE 
   DATE_FORMAT(date, "%%m-%%d") BETWEEN *day1* AND *day10*
 AND 
   fcst_date IN (%1$s, %2$s, %3$s, %4$s, %5$s, %6$s, %7$s, %8$s, %9$s, %10$s)"
';

$query = sprintf($qry_str, $day1, $day2, $day3, $day4, $day5, $day6, $day7, $day8, $day9, $day10);

$res = $this->db->query($query);

我认为您的查询的问题在于%s的使用,它是DATE_FORMAT中'seconds‘的一种说明符

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54530137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档