选择日期时间为在SQL Server 2008的varchar

问题描述:

有没有办法做一个选择日期时间为在SQL Server 2008的varchar

select * from table 

而铸造或转换日期时间为varchar?

这似乎是很容易,但它完全没有我,谢谢。

你只需要在选择

SELECT CONVERT(VARCHAR(10), [MyDateTimecolumn], 20),... 

指定列名看到其他转换方式 http://msdn.microsoft.com/en-us/library/ms187928.aspx

+0

哦,谢谢!我想我是在看这个错误的方式。有没有办法选择表中的所有列,并让它每次运行时自动转换为日期时间? – jsullivan88

+0

不,从SQL Server没有办法做到这一点,当然,消费应用程序可以*地转换这些值,但它喜欢...... –

也许你可以建立具有所有信徒的视图,然后从选择查看而不是基表。不是我主张SELECT * ...

您也可以从目录视图中动态构建视图。

编辑添加示例创建一个视图,它将按需要工作。

DECLARE @sql NVARCHAR(MAX) = N'CREATE VIEW dbo.View_table 
AS 
    SELECT'; 

SELECT @sql = @sql + CHAR(13) + CHAR(10) 
    + '  ' + QUOTENAME(name) + CASE 
     WHEN system_type_id IN (40,42,43,58,61) 
     THEN ' = CONVERT(VARCHAR(10), ' 
    + QUOTENAME(name) + ', 120),' ELSE ',' END 
FROM sys.columns 
WHERE [object_id] = OBJECT_ID('dbo.table'); 

SELECT @sql = LEFT(@sql, LEN(@sql)-1) + ' 
    FROM dbo.table;'; 

PRINT @sql; 
--EXEC sp_executesql @sql; 

不知道你要怎样做TIME数据类型,但是这并不包括在内,因为相同的转换将无法正常工作(它只会改变值1900-01-01)。