我希望不再更新原作者的脚本 支持,但一直坚持我想做的一个改变。
如果我解释有困难,请道歉,因为我确信这是非常基本的。
我在一个文件中有一个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')AS check
但是
dformat = 2然后DATE_FORMAT(lastcheck
,'%m /%d /%y')AS check
是否可以在SQL语句本身内而不是在?
之后执行上述操作我试图寻找其他示例但是当应用于此时,错误就开始了 所以我显然没有说得对。
提前致谢!
答案 0 :(得分: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"])."'";
答案 1 :(得分: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是表格中的字段。
作为旁注,我希望您不要将日期存储为文本,而是使用合适的类型(时间戳或日期时间)。