Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在SQL Case函数中转换日期格式_Mysql_Sql - Fatal编程技术网

Mysql 如何在SQL Case函数中转换日期格式

Mysql 如何在SQL Case函数中转换日期格式,mysql,sql,Mysql,Sql,我正在尝试转换此查询中的日期。我在脚本中多次尝试使用“Convert”函数,但仍然不起作用。这是脚本的一个示例 SELECT client as ClientName, CASE WHEN address.startdate_d is null THEN client.sysadmindata_d ELSE address.startdate_d END AS BeginDate FROM client 我试图使用转换(varchar,echo.er\u address.startdate\u

我正在尝试转换此查询中的日期。我在脚本中多次尝试使用“Convert”函数,但仍然不起作用。这是脚本的一个示例

SELECT client as ClientName,
CASE
WHEN address.startdate_d is null THEN client.sysadmindata_d ELSE address.startdate_d
END
AS BeginDate
FROM client
我试图使用
转换(varchar,echo.er\u address.startdate\u d,101)
但它没有转换。

试试看

CONVERT(varchar, echo.er_address.startdate_d, 1)

这有点不清楚,但我认为您希望将整个案例语句包装在转换中:

CONVERT(varchar, CASE WHEN .... END, 101) as BeginDate

这将把case表达式的结果转换为101格式的varchar。

您可能希望使用
COALESCE()
而不是
case

CONVERT(varchar(255), COALESCE(address.startdate_d, client.sysadmindata_d), 101)

还要注意
varchar()
上的长度。SQL Server在不同的上下文中具有不同的默认长度。依赖默认值是一种不好的做法;你应该说清楚。

你能解释一下你的答案吗?为什么要将最后一个参数从101切换到1?这将有助于改进您的答案。参数不是问题所在,而是函数的位置是问题所在。我通过更正该语句犯了一个错误,因为sintax对应的是SQL Server而不是MySQL。虽然这段代码可以回答问题,最好解释如何解决问题,并提供代码作为示例或参考。只使用代码的答案可能会令人困惑,并且缺乏上下文。谢谢,Aaron,这正是我所需要的。您将convert()101结合使用时,建议使用SQL Server,而不是MySQL。