我需要将DateTime变量中的值转换为yyyy-mm-dd格式的varchar变量(没有时间部分)。

我怎么做呢?


当前回答

select REPLACE(CONVERT(VARCHAR, FORMAT(GETDATE(), N'dd/MM/yyyy hh:mm:ss tt')),'.', '/')

结果是05/05/2020 10:41:05 AM

其他回答

使用Microsoft Sql Server:

--
-- Create test case
--
DECLARE @myDateTime DATETIME
SET @myDateTime = '2008-05-03'

--
-- Convert string
--
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)

使用Microsoft SQL Server:

使用CONVERT语法:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

例子:

SELECT CONVERT(varchar,d.dateValue,1-9)

对于样式,您可以在这里找到更多信息:MSDN - Cast和转换(Transact-SQL)。

你可以转换你的日期在许多格式,语法很简单使用:

CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' * )
CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016

代码是一个整数,这里3是第三个没有世纪的格式,如果你想要世纪,只需将代码更改为103。

在你的情况下,我只是转换和限制大小的nvarchar(10)像这样:

CONVERT(NVARCHAR(10), MY_DATE_TIME, 120) => 2016-09-15

详见:http://www.w3schools.com/sql/func_convert.asp

另一个解决方案(如果你的日期是一个Datetime)是一个简单的CAST:

CAST(MY_DATE_TIME as DATE) => 2016-09-15
CONVERT(VARCHAR, GETDATE(), 23)

OP提到了datetime格式。对我来说,时间成了绊脚石。 我认为在格式化之前删除时间部分(通过强制转换datetime到date)会更简洁一些。

convert( varchar(10), convert( date, @yourDate ) , 111 )