一尘不染

为什么在getdate()上使用left()会将其更改为其他数据类型?

sql

运行两个简单的select语句:

SELECT GETDATE()

SELECT LEFT(GETDATE(), 10)

返回值:

2015-10-30 14:19:56.697

Oct 30 201

我原本希望LEFT()给我2015-10-30,但事实并非如此。

有人知道为什么吗?与数据类型GETDATE返回的样式有关吗?

谢谢!


阅读 132

收藏
2021-05-23

共1个答案

一尘不染

GETDATE()返回一个datetime值。完成SELECT GETDATE()后, 应用程序
将获取日期时间值并弄清楚如何显示它。您正在使用的应用程序明智地选择了ISO标准格式。

当您执行时LEFT(GETDATE()数据库
需要执行从datetime到某个字符串值的隐式转换。为此,它使用其国际化设置。您所看到的是基于这些设置的。

故事的寓意:避免隐式转换。始终要明确自己在做什么,尤其是在诊断功能较差的SQL中。因此,CONVERT()针对您要执行的操作使用适当的格式。

2021-05-23