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

我怎么做呢?


当前回答

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

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

其他回答

试试下面的方法:

CONVERT(varchar(10), [MyDateTimecolumn], 20)

对于一个完整的约会时间,而不仅仅是约会,请:

CONVERT(varchar(23), [MyDateTimecolumn], 121)

查看本页转换样式:

http://msdn.microsoft.com/en-us/library/ms187928.aspx 或 SQL Server CONVERT()函数

DECLARE @DateTime DATETIME
SET @DateTime = '2018-11-23 10:03:23'
SELECT CONVERT(VARCHAR(100),@DateTime,121 )

对于SQL Server 2008+,可以同时使用CONVERT和FORMAT。

例如,对于欧洲风格(例如德国)的时间戳:

CONVERT(VARCHAR, FORMAT(GETDATE(), 'dd.MM.yyyy HH:mm:ss', 'de-DE'))

强制转换或转换:

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), '.', '-')
CONVERT(VARCHAR, GETDATE(), 23)