运行两个简单的select语句:
SELECT GETDATE()
SELECT LEFT(GETDATE(), 10)
返回:
2015-10-30 14:19:56.697
Oct 30 201
我期待LEFT()
给我2015-10-30
,但事实并非如此。
有谁知道为什么?是否与数据类型GETDATE
返回的样式有关?
谢谢!
答案 0 :(得分:9)
GETDATE()
返回datetime
值。执行SELECT GETDATE()
后,应用程序将获取日期时间值并确定如何显示它。您正在使用的应用程序明智地选择ISO标准格式。
执行LEFT(GETDATE()
时,数据库需要从datetime
隐式转换为某个字符串值。为此,它使用其国际化设置。您所看到的是基于这些设置。
故事的道德:避免隐含的转换。始终明确您正在做什么,特别是在具有相当差的诊断功能的SQL中。因此,请使用CONVERT()
以适合您想要的格式。
答案 1 :(得分:0)
GETDATE()命令返回 DATETIME ,您想要返回 DATE
SELECT CONVERT(DATE,GETDATE());