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

我怎么做呢?


当前回答

你可以使用DATEPART(DATEPART, VARIABLE)。例如:

DECLARE @DAY INT 
DECLARE @MONTH INT
DECLARE @YEAR INT
DECLARE @DATE DATETIME
@DATE = GETDATE()
SELECT @DAY = DATEPART(DAY,@DATE)
SELECT @MONTH = DATEPART(MONTH,@DATE)
SELECT @YEAR = DATEPART(YEAR,@DATE)

其他回答

CONVERT(VARCHAR, GETDATE(), 23)

试试下面的方法:

CONVERT(VARCHAR(10),GetDate(),102)

然后需要将“。”替换为“-”。

这里有一个网站可以提供帮助 http://www.mssqltips.com/tip.asp?tip=1145

declare @dt datetime

set @dt = getdate()

select convert(char(10),@dt,120) 

我有固定的数据长度的字符(10),因为你想要一个特定的字符串格式。

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

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

简单使用“转换”,然后使用“格式”得到你想要的日期格式

DECLARE @myDateTime DATETIME
SET @myDateTime = '2008-05-03'

SELECT FORMAT(CONVERT(date, @myDateTime ),'yyyy-MM-dd')