php - 在 MySQL 中只选择一个子字符串然后返回它

标签 php mysql

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select



在 MySQL 中,我尝试使用格式为“2010 年 1 月 1 日”的名为“edate”的文本字段从一千多行中仅选择不同的年份:
SELECT DISTINCT DATE_FORMAT(STR_TO_DATE(edate, '%e-%b-%Y'), %Y) 
  FROM addnews 
 WHERE status = 1 
   AND archives = 1 
   AND delete1 = 0

MySQL 回归

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\WAMP\www\baycrossings\web\archives.php on line 28"



在 MS SQL 中,它的工作原理如下:
select distinct(year(edate)) 
  from addnews 
 where status = 1 
   and archives = 1 
   and delete1 = 0

MySQL不允许子字符串选择吗?我试图避免选择比每次查询所需的数据多数百倍的数据。

最佳答案

您是否忘记引用 %Y DATE_FORMAT() 的第二个参数?

尝试将您的查询调用更改为如下所示:

$result = mysql_query($your_query) or trigger_error(mysql_error());

这样您就可以看到 MySQL 返回的实际错误,而不仅仅是关于 mysql_query() 返回 FALSE 的错误(这就是您粘贴的错误所说的)。

除此之外,您不应该将日期作为字符串存储在数据库中。应该使用 native 日期字段类型,因为它们允许执行日期“数学”,而无需进行一些非常昂贵的字符串到日期转换。

由于您只是想从字符串日期中提取年份,假设日期格式是恒定的,请尝试使用:
SELECT ..., RIGHT(edate, 4)

这将比字符串到日期到字符串的往返操作快得多。

关于php - 在 MySQL 中只选择一个子字符串然后返回它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7218819/

相关文章:

php - mod_rewrite 不工作 xampp(附图片)

php - 如何使用 PHP 和 MySQL 从数据库检索数据并缩进返回的结果?

php - 获取特定帖子类型的标签

php - PDO 的 setFetchMode(PDO::FETCH_ASSOC) 的全局设置

PHP ZipArchive 状态值是什么意思?

Mysql创建一对一关系

mysql 三表JOIN

mysql - mysql数据库实现中的一个大表或多个小表

php - 将 Laravel 用于服务 worker ?

javascript计时器/持续时间在一段时间后给出错误的计算