2013-02-19 85 views
3

我有一个SQL查询:
SELECT DATEDIFF(deadline,CURDATE()) FROM tasks WHERE 1
即时修改SQL结果?

结果是:3

我怎样才能返回结果为:中3 Days代替3

我知道我可以手动添加的字符串从我的C#代码是这样的:

string result = getSqlresult(); 
string result += " Days"; 

但我想从MySQL数据库直接得到结果为3 Days

原因: 我直接绑定信息到datagridview,因此,为了修改结果,我需要遍历所有行并更新它们。因此,为了提高性能,我需要从数据库的33 Days代替

Anyhelp直接得到的结果将非常感激

回答

6

您可以将字符串Days到使用CONCAT的的DATEDIFF结果。

SELECT CONCAT(DATEDIFF(deadline,CURDATE()), ' Days') 
FROM tasks 
WHERE 1 

如果您正在使用旧版本的MySQL,将其转换为字符串,所以你不会得到bolb结果。

SELECT CONCAT(CAST(DATEDIFF(deadline,CURDATE()) AS CHAR(5)), ' Days') 
FROM tasks 
WHERE 1 

更新1

SELECT CASE 
      WHEN DATEDIFF(deadline,CURDATE()) >= 0 
      THEN CONCAT(DATEDIFF(deadline,CURDATE()), ' Days') 
      ELSE CONCAT('Expired since ', DATEDIFF(deadline,CURDATE()) * -1, ' Days') 
     END 
FROM tasks 
+0

我不相信它是那么容易!感谢您的回答 – 2013-02-19 13:08:51

+0

不客气':D' – 2013-02-19 13:12:15

+0

如果DATEDIFF()的值是负数,我该如何显示'Date expired'是否存在一些问题? – 2013-02-19 13:15:59