1

我使用的是 SQL Server 2008 R2,我的代码如下:

declare @vCreatedDateTime datetime = '2013-05-27 13:57:43.023' 
select 'Date:' + convert(varchar(100),@vCreatedDateTime)
-- Output is May 27 2013  1:57PM  -- Format is completely changed

select 'Date:' + convert(varchar(100),@vCreatedDateTime,120)
-- Output is 2013-05-27 13:57:43  -- milliseconds are missing here

如何将给定格式的输入日期时间变量准确地连接到任何 varchar 变量中。

我的意思是如果(仅有效的日期时间格式)

输入是“2013-05-27 13:57:43.023”,输出应该是“2013-05-27 13:57:43.023”

输入是'2013-05-27 13:57:43',输出应该是'2013-05-27 13:57:43'

输入是'2013-05-27 13:57',输出应该是'2013-05-27 13:57'

输入是“2013-05-27”,输出应该是“2013-05-27”

此脚本阻止数据脚本的一部分,@vCreatedDateTime 的值将手动传递。这可以转换吗?

4

1 回答 1

2

日期时间将始终存储,2013-05-27 13:57:43.023所以这就是你得到的。

如果你传入

  • 2013-05-27它成为了2013-05-27 00:00:00.000
  • 2013-05-27 13:57变成2013-05-27 13:57:00.000

像这样

declare @vCreatedDateTime datetime = '2013-05-27 13:57:43.023';
select 'Date:' + convert(varchar(100),@vCreatedDateTime,121);
SET @vCreatedDateTime = '2013-05-27';
select 'Date:' + convert(varchar(100),@vCreatedDateTime,121);
SET @vCreatedDateTime = '2013-05-27 13:57';
select 'Date:' + convert(varchar(100),@vCreatedDateTime,121);

但是,您可以使用LEFT仅获取字符串的一部分。请注意,您也必须将其传入。

并且您需要使用格式 121 根据 MSDN 保留毫秒

于 2013-05-27T08:50:31.337 回答