在Tsql中选择一个日期时间,修剪毫秒并以字符串形式返回

时间:2017-01-09 09:18:25

标签: tsql datetime

问题:我想选择一个日期(存储为日期时间),并返回字符串,并修剪掉毫秒。

eg  2017-01-04 08:47:30.0000000 => "2017-01-04 08:47:30"

我目前的解决方案:

我有3条陈述可以做到:

子串选项

 select  
    SUBSTRING(CONVERT(nvarchar,EventDate),0,20) 
 from  EventsTable

双倍转换

select  
     CONVERT(nvarchar, CONVERT(datetime2(0),EventDate))  
from  EventsTable

短nvarchar

select  
   CONVERT(nvarchar(19),EventDate) 
from  EventsTable

上述所有解决方案都能实现我的目标。

问题: 实现目标的最佳实践/最有效方法是什么?

2 个答案:

答案 0 :(得分:0)

在转换中使用日期样式:

select CONVERT(varchar(19),EventDate,120)
from  EventsTable

我会用这个。它只使用一个函数,并为varchar设置正确的长度,格式告诉SQL Server你需要正确的格式。

由于样式120是标准,因此无论数据库或会话中的本地化设置如何,您都确信它是相同的。

答案 1 :(得分:0)

我使用SQL Server 2008R2启用的执行计划运行了所有三个查询。

我收到的所有费用相等(各占33%)。

所有三个查询都需要相同的时间和资源。

但是,第三个可能会帮助您编写更少的代码。