SqlServer 关于convert23时间转换前后不一致问题

运行 SELECT convert(VARCHAR(11),getdate(),23)
结果:2019-01-29
运行 SELECT getdate()
结果 :2019/1/29 9:42:02
运行 SELECT convert(VARCHAR(11),'2019/1/29 9:42:02',23)
结果 :2019/1/29 9
求解释,为什么 第三次运行没有得到‘2019-01-29’ 这个结果呢???

CONVERT() 函数是把日期转换为新数据类型的通用函数,也就是说,第二个参数要求是日期类型:

1、你给的第一个例子为符合日期型,所以正确的转换了

2、当你给的第三次例子中第二个参数并不是日期型,只是个字符型,那么转换的时候就按照字符串来转换,所以截取了前11位,也就是你显示的结果;

3、如果要符合CONVERT()函数的标准,你应该这样修改:

 SELECT convert(VARCHAR(11),  CAST('2019/1/29 9:42:02' as datetime),23)

温馨提示:答案为网友推荐,仅供参考