sql-server - 将所有表的日期更改为sql server中的日期时间数据类型

标签 sql-server database

我在数据库中的许多表中都有日期字段,现在我想将所有表的日期数据类型更改为日期时间数据类型,我已经搜索了很多次但我没有找到更好的解决方案,我怎么能解决这个问题,你有什么想法或者你能为我写任何具体的查询吗?谢谢。

最佳答案

尝试以下查询:

DECLARE @Result NVARCHAR(MAX) = ''

SELECT @Result = @Result + 'Alter Table [' +t.name + '] Alter Column [' + c.name +'] DateTime ' + CASE WHEN c.is_nullable=1 THEN ' NULL' ELSE 'Not NULL' END +' '
FROM sys.tables t
INNER JOIN sys.columns c ON c.object_id = t.object_id
INNER JOIN sys.types ty ON ty.user_type_id = c.user_type_id
WHERE ty.name = 'Date'
    AND OBJECTPROPERTY(t.object_id,'IsUserTable')=1

EXEC(@Result)

关于sql-server - 将所有表的日期更改为sql server中的日期时间数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24967758/

相关文章:

sql-server - 更新 VARBINARY(max) 列时 .WRITE(NULL, NULL, NULL) 的语义

sql - Varstring 问题

mysql - 需要指导 : FIrst time going to work with real high end database (size = 50GB).

javascript - 通过日期变量过滤 Graphql 结果

mysql - 如何将 mysql SELECT 读入 bash 变量,然后使用这些变量 INSERT INTO 不同的表

sql-server - 版本与此服务器版本不兼容。如何升级?

sql - 在这里使用 varbinary 比 varchar 有什么优势?

sql - 使用日期部分的Where子句中的案例

mysql - Windows 上的 my.cnf 等效文件在哪里

sql - 如何通过 "IN"子句中的条件从数据库中获取结果?