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

我怎么做呢?


当前回答

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


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

其他回答

试试下面的方法:

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

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

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

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

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
declare @dt datetime

set @dt = getdate()

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

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

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

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

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

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