簡體   English   中英

SQL Server:將日期時間插入表中

[英]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 中日期/時間文字的唯一真正安全的格式,至少對於datetimesmalldatetime ,是: YYYYMMDDYYYY-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM