【发布时间】:2017-05-23 12:14:03
【问题描述】:
问题:我想选择一个日期(存储为日期时间)并返回一个 string 并去掉毫秒。
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
上述所有解决方案都有效并实现了我的目标。
问题: 实现我的目标的最佳做法/最有效的方法是什么?
【问题讨论】:
-
最佳实践是简单地返回一个日期时间,让您的表示层处理格式。你也应该always specify a length when converting to, or declaring
CHAR/NCHAR/VARCHAR/NVARCHAR。也完全没有必要使用NVARCHAR,您期望的日期格式为yyyy-MM-dd hh:mm:ss,不会有任何非unicode字符,所以VARCHAR就可以了。