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

我怎么做呢?


当前回答

declare @dt datetime

set @dt = getdate()

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

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

其他回答

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

你没有说什么语言,但我假设是c# /。NET,因为它具有原生DateTime数据类型。在这种情况下,只需使用ToString方法进行转换,并使用如下格式说明符:

DateTime d = DateTime.Today;
string result = d.ToString("yyyy-MM-dd");

但是,我要警告不要在数据库查询中使用它或连接到SQL语句中。数据库需要使用特定的格式化字符串。如果您想要完成这个任务,最好将时间部分归零,并使用DateTime作为SQL参数。

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

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

你可以使用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)