如何在表格中插入值类型日期时间?

时间:2019-01-14 15:23:17

标签: sql-server

问题在于不要在表中插入值。

我通过未解决的问题检查SQL Server的咨询以获取日期时间类型的插入值。

USE [NameTable]
GO

INSERT INTO [dbo].[User]
    ([UserSID]
    ,[ApplicationSID]
    ,[Username]
    ,[Email]
    ,[Password]
    ,[PasswordQuestion]
    ,[PasswordAnswer]
    ,[IsApproved]
    ,[IsOnline]
    ,[IsLockedOut]
    ,[LastLockedOutDate]
    ,[FailedPasswordAttemptCount]
    ,[FailedPasswordAttemptWindowStart]
    ,[FailedPasswordAnswerAttemptCount]
    ,[FailedPasswordAnswerAttemptWindowStart]
    ,[Comment]
    ,[CreationDate]
    ,[LastActivityDate]
    ,[LastLoginDate]
    ,[LastPasswordChangedDate]
    ,[LastChangedUser]
    ,[LastChangedDate])
     VALUES
    ('db0a4054-5efe-4945-bd08-ba057cd7990f'
    ,'F830DCF0-7D82-4FC1-B258-0502D0F00029'
    ,'lvillarroel'
    ,'lvv_umss@gmail.com'
    ,'vcaMiL4tVmj4wyXhTw/ISz344maPUDzcV2z8SFVKMF0='
    ,'NULL'
    ,'NULL'
    ,1
    ,0
    ,0
    ,'2019-01-14T18:10:40'
    ,0
    ,'NULL'
    ,0
    ,'NULL'
    ,''
    ,'2019-01-14T18:10:40'
    ,'NULL'
    ,'NULL'
    ,'NULL'
    ,'db0a4054-5efe-4945-bd08-ba057cd7990f'
    ,'NULL')
GO

结果是一条消息

  

第241条消息,第16级,状态1,第4行
  从字符串转换日期和/或时间时转换失败。

2 个答案:

答案 0 :(得分:4)

真正的问题是'null',您不需要在null值周围包含单引号。

或者您可以直接忽略没有值的列(即'null')。

即使日期在2019-01-14T18:10:40中,您的代码也可以完美运行SQL Server会为您隐式将其转换为date / date time

因此,在您的代码中,您有一个[LastChangedDate]并提供了'NULL'值,该值不正确且不会隐式转换为日期时间。因此,只需尝试null而不是'null'

答案 1 :(得分:0)

如果您要编写'NULL',则SQL Server可以理解并将其视为字符串值。因此,如果您不想插入Datetime的值,则只需编写NULL,如下所示。

在这里,我使用的日期值与您在尝试运行的SQL查询中使用的日期值相同,并且与您的问题相同。

Create table Users([LastLockedOutDate]  DateTime
    ,[CreationDate]  DateTime
    ,[LastActivityDate]  DateTime
    ,[LastLoginDate]  DateTime
    ,[LastPasswordChangedDate]  DateTime
    ,[LastChangedDate] DateTime)

Insert Into Users Values('2019-01-14T18:10:40', '2019-01-14T18:10:40', NULL, NULL, NULL, NULL)

SELECT * FROM Users

您可以在Live Demo

中找到演示