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

我怎么做呢?


当前回答

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

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

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

其他回答

这就是我怎么做的:CONVERT(NVARCHAR(10), DATE1, 103))

你没有说哪个数据库,但是用mysql这里是一个从时间戳中获得日期的简单方法(varchar类型转换应该自动发生):

mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2008-09-16  | 
+-------------+
1 row in set (0.00 sec)

写一个函数

CREATE FUNCTION dbo.TO_SAP_DATETIME(@input datetime)
RETURNS VARCHAR(14)
AS BEGIN
    DECLARE @ret VARCHAR(14)
    SET @ret = COALESCE(SUBSTRING(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(26), @input, 25),'-',''),' ',''),':',''),1,14),'00000000000000');
    RETURN @ret
END

强制转换或转换:

CAST的语法:

CAST ( expression AS data_type [ (length ) ])

CONVERT的语法:

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

http://msdn.microsoft.com/en-us/library/ms187928.aspx

实际上,因为你要求了一个特定的格式:

REPLACE(CONVERT(varchar(10), Date, 102), '.', '-')

时间格式为'yyyy-mm-dd 00:00:00.000'


SELECT CAST( CONVERT(VARCHAR, GETDATE(), 101) AS DATETIME) ;