如何将Date和DateName连接在一起

时间:2015-10-09 07:32:31

标签: sql-server-2008

我想将日期和日期名称连在一起。我该怎么做。 我需要像

这样的输出
2015-10-09 Friday

I got the DateName=  `SELECT DATENAME(dw,'2015-10-09') as MyDateName` 

是否可以在单个查询中创建它?

3 个答案:

答案 0 :(得分:2)

试试这个:

select CAST('2015-10-09' as varchar(10)) + ' ' +DATENAME(dw,'2015-10-09')

<强> SQLFIDDLE DEMO

如果您的日期已经是varchar格式,那么您不需要CAST日期,只需尝试使用+

连接它们
select '2015-10-09' + ' ' +DATENAME(dw,'2015-10-09')

答案 1 :(得分:1)

由于您提供的值已经是一个字符串,而DATENAME也返回一个字符串,您可以只与+连接:

SELECT '2015-10-09 ' + DATENAME(WEEKDAY,'2015-10-09') as MyDateName

假设实际上这是数据类型datetime的参数或列,您需要先将其转换为varchar。转换为包含Day名称的varchar没有内置样式,因此您必须自己分两部分完成工作。

有关内置格式,请参阅MSDN page on cast and convert

为了我的例子,我将创建一个用于测试的日期时间变量:

  

DECLARE @d DATETIME; SET @d ='20151009';

然后将其转换为VARCHAR:

对于日期部分,ODBC最接近您要求格式为yyyy-mm-dd hh:mi:ss(24h)的格式。因此,要将该格式的日期作为varchar,您可以将CONVERT用于该样式,值为20。

SELECT CONVERT(VARCHAR(10), @d, 20)

注意我已将其转换为VARCHAR(10)以截断输出中不需要的日期时间的时间部分。然后,如果你将它与一个空格和你已经解决的日期名称连接起来,你可以得到你的输出:

SELECT CONVERT(VARCHAR(10), @d, 20) + ' ' + DATENAME(WEEKDAY, '2015-10-09') AS MyDateName

(将我的变量替换为列名,如果你是从表中输出后添加一个FROM语句)

答案 2 :(得分:0)

您可以尝试以下代码:

SELECT 
    CAST(CAST(GETDATE() AS DATE) AS VARCHAR) + ' ' + DATENAME(DW, GETDATE()) AS [DATE_WITH_WEEKNAME]