正如其他人所說,創建一個計算列將是一個更好的選擇。完全避免這種做法會更好。但是,如果不能避免這種方法,這裏是您可以使用的計算列表達式。在輸出部分,你可以注意到,在本月和分鐘無效值實際上加起來,顯示在未來
計算列表達式正確的日期:
(dateadd(year, (100) + [year],
dateadd(month, [month] - (1),
dateadd(day, [day] - (1),
dateadd(hour, [hour],
dateadd(minute, [min], (0))
)
)
)
)
)
示例腳本:
CREATE TABLE dbo.myTable
(
[year] int NOT NULL
, [month] int NOT NULL
, [day] int NOT NULL
, [hour] int NOT NULL
, [min] int NOT NULL
, [smalldatetime] AS (dateadd(year,(100)+[year],dateadd(month,[month]-(1),dateadd(day,[day]-(1),dateadd(hour,[hour],dateadd(minute,[min],(0))))))) PERSISTED
);
INSERT INTO dbo.myTable ([year], [month], [day], [hour], [min]) VALUES
(12, 4, 27, 17, 34),
(12, 6, 12, 4, 8),
(11, 32, 12, 54, 87);
SELECT [year]
, [month]
, [day]
, [hour]
, [min]
, [smalldatetime]
FROM dbo.myTable;
取樣輸出:
year month day hour min smalldatetime
---- ----- --- ---- --- -----------------------
12 4 27 17 34 2012-04-27 17:34:00.000
12 6 -12 4 8 2012-05-19 04:08:00.000
11 32 12 54 87 2013-08-14 07:27:00.000
SQL = SQL Server? SQL實際上只是**結構化查詢語言** - 不是數據庫產品... – 2012-04-27 19:30:38