将varchar数据类型的sql转换为超出范围的日期时间数据类型

时间:2017-07-27 09:56:27

标签: sql sql-server

enter image description here

我正在尝试添加一个表,其中一组值是一个日期。 尝试添加日期时,我收到以下错误:

  

将varchar数据类型转换为日期时间数据类型会导致超出范围的值。

我试图运行以下查询:

INSERT INTO BoxEntries (Date,Value,Description,Empid,EmpName) Values(CAST('27/07/2017 10:24:13' AS DATETIME),'0','Alpha Day','0','Alpha')

INSERT INTO BoxEntries (Date,Value,Description,Empid,EmpName) Values(CONVERT(VARCHAR,'27/07/2017 10:24:13',13),'0','Alpha Day','0','Alpha')

INSERT INTO BoxEntries (Date,Value,Description,Empid,EmpName) Values(CONVERT(VARCHAR,'27-07-2017 10:24:13.000',113),'0','Alpha Day','0','Alpha')

INSERT INTO BoxEntries (Date,Value,Description,Empid,EmpName) Values('27-07-2017 10:24:13.000','0','Alpha Day','0','Alpha')

我已经确认,13或113是SQL中我想要的数据时间。 有线部分是当我尝试直接向数据库添加值时,它不会给我任何错误。

表格:

CREATE TABLE [dbo].[BoxEntries] ( 
  [Id] INT IDENTITY (1, 1) NOT NULL, 
  [Date] DATETIME NOT NULL, 
  [Value] MONEY NOT NULL, 
  [Description] VARCHAR (MAX) NOT NULL, 
  [EmpId] INT NOT NULL, 
  [EmpName] VARCHAR (MAX) NOT NULL, 
  PRIMARY KEY CLUSTERED ([Id] ASC) );

1 个答案:

答案 0 :(得分:1)

日期时间的mssql格式为'YYYY-MM-DD HH:MM:SS.mmm'

https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime-transact-sql

因此对您的案例的正确查询可能是:

INSERT INTO BoxEntries ([Date],Value,Description,Empid,EmpName)
    Values('2017-07-27 10:24:13.000', '0', 'Alpha Day', '0', 'Alpha');