0

我正在寻找更新原作者不再支持但陷入我想要进行的更改之一的脚本。

如果我难以解释,我深表歉意,因为我确信这是非常基本的。

我在一个文件中有一个 MySQL 语句,如下所示,但我现在想在数据库中添加一个名为 dformat 的附加字段。

这是当前的声明:

$SQL="SELECT `userid`, `score`, `summary`, `option`, DATE_FORMAT(`lastcheck`, '%d/%m/%y') AS `check`  FROM `".$dbpref."users` WHERE `active`='Y' AND `id`='".intval($_GET["user"])."'";

我希望改变的部分是这一点:

DATE_FORMAT(`lastcheck`, '%d/%m/%y') AS `check`

我想要做的是检查新字段 dformat 以及在哪里

dformat = 1 然后 DATE_FORMAT( lastcheck, '%d/%m/%y') AScheck

但是哪里

dformat = 2 然后 DATE_FORMAT( lastcheck, '%m/%d/%y') AScheck

是否可以从 SQL 语句本身而不是之后执行上述操作?

我试图寻找其他示例,但是当应用于此示例时,错误就开始了,因此显然我的陈述不正确。

提前致谢!

4

2 回答 2

2

你可以用CASE声明来做到这一点。

$SQL="SELECT `userid`, 
              `score`, 
            `summary`,
             `option`, 
             CASE WHEN dformat = 1 THEN DATE_FORMAT(lastcheck, '%d/%m/%y') 
                  WHEN  dformat = 2 then DATE_FORMAT(lastcheck, '%m/%d/%y') END AS `check`  
      FROM `".$dbpref."users` 
      WHERE `active`='Y' 
      AND `id`='".intval($_GET["user"])."'";
于 2013-09-22T19:43:32.617 回答
0

在mysql中,您可以执行以下操作

$SQL="SELECT `userid`, `score`, `summary`, `option`, 
if(dformat=1 ,
DATE_FORMAT(`lastcheck`, '%d/%m/%y'), 
DATE_FORMAT(lastcheck, '%m/%d/%y')
) AS     `check`  FROM `".$dbpref."users` WHERE `active`='Y' 
AND  `id`='".intval($_GET["user"])."'";

也就是说,如果 dformat 是表上的一个字段。

作为旁注,我希望您不要将日期存储为文本,而是使用合适的类型(时间戳或日期时间)。

于 2013-09-22T19:45:23.373 回答