Mysql 如何在SQL Case函数中转换日期格式
我正在尝试转换此查询中的日期。我在脚本中多次尝试使用“Convert”函数,但仍然不起作用。这是脚本的一个示例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
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。