好吧,它的长短......
拥有在Excel中运行的2008 r2 SQL查询并驱动数据透视表/图表。设计这个数据库的一些天才(我的意思是字面意思,因为它们可能比我更聪明的1000倍)有一个重要的日期列在属性中列为'日期'。那你说什么???
excel不会允许数据透视图/表按月分组(这是它的缺点)。 excel中没有任何东西可以工作,如果我格式化单元格等等......它都会恢复刷新数据等等......没有什么可以解决这个问题而且不能使用宏,因为我的Org不允许它。
SO MY FIX ......
将'date'转换为varchar,然后从varchar转换为datetime ...效果很好,看起来像这样:
(CONVERT(varchar(10), [TestDate], 20)) as 'Date1',
(CONVERT(datetime, [TestDate], 20)) as 'Date2',
现在我的问题......
任何人都可以帮助我将这两个语句组合成一个只产生一个名为'Date'的列
已经很晚了,我的大脑在给我2杯咖啡之前给了我...这位新手非常感谢..
编辑:因为它显然最终得到了2个带有'date1'和'date2'标签的列。
答案 0 :(得分:4)
你需要嵌套它们。您获取Date1
的内容并将其放在Date2
内以代替列名称。这将是它在SQL服务器中的工作方式
(CONVERT(datetime,(CONVERT(varchar(10),[TestDate],20)),20))' Date2'
答案 1 :(得分:0)
如果您要删除time
部分,可以使用以下解决方案避免这些转换:
DECLARE @TestDate DATETIME;
SET @TestDate = GETDATE();
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, @TestDate), 0) AS Sol1
SELECT DATEADD(DAY, DATEDIFF(DAY, {d '1900-01-01'}, @TestDate), {d '1900-01-01'}) AS Sol2
注意:日期时间0 = 1900-01-01