在sql server 2008中选择datetime作为varchar

时间:2011-09-07 03:13:00

标签: sql sql-server sql-server-2008

有没有办法做

select * from table

将日期时间转换或转换为varchar?

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

2 个答案:

答案 0 :(得分:3)

您只需在选择

中指定列名称即可
SELECT CONVERT(VARCHAR(10), [MyDateTimecolumn], 20),...

查看其他转换样式 http://msdn.microsoft.com/en-us/library/ms187928.aspx

答案 1 :(得分:1)

也许你可以构建一个包含所有转换的视图,然后从视图而不是基表中选择。不是我提倡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)。