问题:我想选择一个日期(存储为日期时间),并返回字符串,并修剪掉毫秒。
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
上述所有解决方案都能实现我的目标。
问题: 实现目标的最佳实践/最有效方法是什么?
答案 0 :(得分:0)
在转换中使用日期样式:
select CONVERT(varchar(19),EventDate,120)
from EventsTable
我会用这个。它只使用一个函数,并为varchar设置正确的长度,格式告诉SQL Server你需要正确的格式。
由于样式120是标准,因此无论数据库或会话中的本地化设置如何,您都确信它是相同的。
答案 1 :(得分:0)
我使用SQL Server 2008R2启用的执行计划运行了所有三个查询。
我收到的所有费用相等(各占33%)。
所有三个查询都需要相同的时间和资源。
但是,第三个可能会帮助您编写更少的代码。