【问题标题】:Error message "Operand should contain 1 column(s)"错误消息“操作数应包含 1 列”
【发布时间】:2014-05-31 02:06:44
【问题描述】:

我正在尝试为 mysql 中日期字段的日期范围选择日期和月份部分,它给了我这个错误“操作数应包含 1 列”。 表名是个人的 日期字段名称是 dob

"SELECT *
FROM personal
WHERE (EXTRACT(MONTH
               FROM dob),
       EXTRACT(DAY
               FROM dob)) BETWEEN '$fromdate' AND '$todate'"

dob 是日期字段,$fromdate 和 $todate 保存从屏幕输入的日期,例如“2014-04-30”和“2014-06-30”

【问题讨论】:

  • dob 列的数据类型是什么? $fromdate$todate的格式是什么?

标签: mysql date-formatting mysql-error-1241


【解决方案1】:

您需要使用 CONCAT 来合并您的 dob 列中的日期和月份,然后使用 between 子句进行比较

SELECT 
  * 
FROM
  personal 
WHERE
CONCAT(EXTRACT(MONTH FROM dob),'-',EXTRACT(DAY FROM dob))
BETWEEN '$fromdate'   AND '$todate' 

或者最好使用DATE_FORMAT 仅获取月份和日期,但请确保您在列中存储了标准日期对象,并且您在DATE_FROMAT 中提供的格式必须与您提供的参数的格式匹配

SELECT 
  * 
FROM
  personal 
WHERE
DATE_FROMAT(dob,'%m-%d')
BETWEEN '$fromdate'   AND '$todate' 

【讨论】:

    【解决方案2】:

    使用WHERE 子句,您可以比较多个值,但每次一个。

    在您的声明中,WHERE 试图将 MONTHDAY 作为单独的值使用逗号分隔但与 $fromdate$tdate 进行比较,这是不正确的。

    因此是错误:

    Operand should contain 1 column(s)
    

    您可能正在寻找这样的解决方案:

    如果$fromdate$todate的格式是mmdd,那么

    SELECT * FROM personal
    WHERE date_format( dob, '%m%d' ) 
          BETWEEN '$fromdate' AND '$todate'
    

    【讨论】:

    • 尝试了您的解决方案并遇到此错误“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 'WHERE DATE_FORMAT( dob, '%m-%d' )BETWEEN '04-01' AND '12-30'' at line 1"
    • 你能把你试过的整个sql语句字符串贴出来吗?
    • "SELECT * FROM personal WHERE WHERE DATE_FORMAT(dob, '%m-%d' )BETWEEN '$fromdate' AND '$todate'";
    • ... personal WHERE WHERE DATE_...中删除多余的WHERE
    【解决方案3】:

    以防万一其他人遇到此错误(我在意识到自己的错误之前与它斗争了几个小时)

    如果您不小心将 SELECT 的列放在括号中,也会出现此错误

    因此,如果您着急剪切并粘贴您的字段列表并输入...

    INSERT INTO mytablename(col1, col2, col3)
    SELECT (col1, col2, col3) FROM anothertable WHERE col4 = 1;
    
    instead of 
    INSERT INTO mytablename(col1, col2, col3)
    SELECT col1, col2, col3 FROM anothertable WHERE col4 = 1;
    

    它抛出 Operand should contain 1 column(s) 错误。

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2013-10-26
      • 2014-11-07
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多