เป็นเพราะว่า SQL Server ได้มีการ upgrade datetime เป็น datetime2 โดยมีการเก็บข้อมูลที่ละเอียดขึ้น แต่บางครั้งกลับใช้พื้นที่ในการเก็บข้อมูลน้อยลง ดังนั้นถ้าเป็นไปได้จึงควร upgrade เป็น datetime2
alter_table_set_column_type_datetime_to_datetime2.sql
SELECT
DB_NAME() AS DatabaseName,
s.name AS SchemaName,
t.name AS TableName,
'ALTER TABLE ' + QUOTENAME(DB_NAME()) + '.' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name) +
' ALTER COLUMN ' + QUOTENAME(c.name) + ' datetime2;' AS alter_sql
FROM
sys.columns AS c
JOIN
sys.tables AS t ON c.object_id = t.object_id
JOIN
sys.schemas AS s ON t.schema_id = s.schema_id
JOIN
sys.types AS ty ON c.user_type_id = ty.user_type_id
WHERE
ty.name = 'datetime';
อ่านเพิ่มเติม
About the author