[英]SQL Server : inserting datetime into table
我有一張桌子:
CREATE TABLE [dbo].[667788]
(
a NVARCHAR(100),
b NVARCHAR(100),
c NVARCHAR(100),
d NVARCHAR(100),
e NVARCHAR(100),
f NVARCHAR(100),
t1 DATETIME,
t2 DATETIME
)
我正在嘗試插入以下值:
('x','y','m','2','a','c','16/11/2012 00:00:00','06/08/2013 00:00:00'),
但我收到一個錯誤:
將 varchar 數據類型轉換為 datetime 數據類型導致值超出范圍
有沒有人知道我提供的格式的任何方法?
SQL Server 中日期/時間文字的唯一真正安全的格式,至少對於datetime
和smalldatetime
,是: YYYYMMDD
和YYYY-MM-DDThh:mm:ss[.nnn]
不過,您可能只需在插入之前設置set dateformat dmy
就可以逃脫。
使用set dateformat dmy;
reextester 演示set dateformat dmy;
: http : //rextester.com/NUQM21818
不知道這是否可行,目前無法驗證,但您可以嘗試使用
select
cast (a as nvarchar(100)) as a,
...
Convert(datetime, getdate(),103) as t1
into yournewtable
From youroldtable
Where 1=2
如果您將列轉換為所需的數據類型並使用 Insert ... Into .. From 並添加 where 1=2 創建一個新表,則您可以使用所需的數據類型和列名創建一個表。
從我收集到的使用參數 103 的 convert 應該可以給出您想要的數據類型結果。 您也可以嘗試將 convert 與 varchar 一起使用,而不是 datetype。
與 Cenderze 的回答類似,您可以通過使用 select 語句插入值來一次性執行插入,該語句對麻煩的值執行轉換:
CREATE TABLE [dbo].[WRBIEL_MasterBindersv2]
(
a NVARCHAR(100),
b NVARCHAR(100),
c NVARCHAR(100),
d NVARCHAR(100),
e NVARCHAR(100),
f NVARCHAR(100),
t1 DATETIME,
t2 DATETIME
)
INSERT INTO [dbo].[WRBIEL_MasterBindersv2]
SELECT
'x','y','m','2','a','c',CONVERT(datetime, '16/11/2012 00:00:00', 103),CONVERT(datetime,'06/08/2013 00:00:00' , 103)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.