在sql server 2008中选择datetime作为varchar

在sql server 2008中选择datetime作为varchar,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,有什么方法可以做一个测试吗 select * from table 将datetimes强制转换为varchar时 这似乎很简单,但我完全无法理解,谢谢。您只需在选择框中指定列名即可 SELECT CONVERT(VARCHAR(10), [MyDateTimecolumn], 20),... 有关其他转换样式,请参见此 您只需在选择框中指定列名即可 SELECT CONVERT(VARCHAR(10), [MyDateTimecolumn], 20),... 有关其他转换样式,请参见此

有什么方法可以做一个测试吗

select * from table
将datetimes强制转换为varchar时


这似乎很简单,但我完全无法理解,谢谢。

您只需在选择框中指定列名即可

SELECT CONVERT(VARCHAR(10), [MyDateTimecolumn], 20),...
有关其他转换样式,请参见此

您只需在选择框中指定列名即可

SELECT CONVERT(VARCHAR(10), [MyDateTimecolumn], 20),...
有关其他转换样式,请参见此

也许您可以构建一个包含所有转换的视图,然后从视图而不是基表中进行选择。我不是在提倡选择*

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

编辑添加示例以创建视图,该视图将根据需要工作

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;

不确定您想对
时间
数据类型执行什么操作,但没有包括在内,因为相同的转换不起作用(它只会将值更改为
1900-01-01
)。

也许您可以构建一个包含所有转换的视图,然后从视图而不是基表中进行选择。我不是在提倡选择*

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

编辑添加示例以创建视图,该视图将根据需要工作

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;

不确定您想对
时间
数据类型执行什么操作,但没有包括在内,因为相同的转换将不起作用(它只会将值更改为
1900-01-01
)。

哦,谢谢!。。我想我看错了。是否无法选择表中的所有列,并让它在每次运行时自动转换为日期时间?否,无法从SQL Server执行此操作,当然,消费应用程序可以随意转换这些值…哦,谢谢!。。我想我看错了。是否无法选择表中的所有列,并使其在每次运行时自动转换为日期时间?否,无法从SQL Server执行此操作,当然,消费应用程序可以随意转换这些值。。。