【问题标题】:Using CURRENT_TIMESTAMP result to insert in an INSERT INTO statement使用 CURRENT_TIMESTAMP 结果插入 INSERT INTO 语句
【发布时间】:2014-01-05 17:50:38
【问题描述】:

我试图执行以下查询:

DECLARE @MyValue DATETIME
SET @MyValue = CAST((SELECT CURRENT_TIMESTAMP) as DATETIME)
INSERT INTO Person (Gender,Name, JoinDate)
VALUES ('M','Alfred',@MyValue)

但 SQL Server 不断抛出以下错误:

消息 241,级别 16,状态 1,过程 Insert_Current_Time,第 8 行 从字符转换日期和/或时间时转换失败 字符串。

我已经尝试了很多其他的方法,但似乎没有一个能解决它。有什么解决办法吗?

【问题讨论】:

  • 您能显示表Person 的架构吗?如果JoinDate 被指定为DateTime,它对我来说可以正常工作。
  • 这个sqlfiddle 表明你没有告诉我们我们需要知道的一切。

标签: sql sql-server timestamp


【解决方案1】:

这样做:

INSERT INTO Person (Gender,Name, JoinDate)
VALUES ('M','Alfred',getdate())

或者这个:

INSERT INTO Person (Gender,Name, JoinDate)
VALUES ('M','Alfred',current_timestamp)

【讨论】:

    【解决方案2】:

    您可以将 CURRENT_TIMESTAMP 放入插入中并省去演员表吗? 这对我有用:

    create table flar ( thetime datetime);
    insert into flar values( CURRENT_TIMESTAMP);
    

    【讨论】:

    • 不。已经试过了,同样的错误(Msg 241,Level 16,State 1)
    • 我在运行它之后从 sql server management studio 窗口中复制了它。 SQL 服务器版本 10.50。目标列的数据类型是什么?
    【解决方案3】:

    JoinDate 是字符串/varchar 数据类型吗?如果是这样,您需要将其转换为字符串,而不是尝试将日期时间值存储在字符串字段中。

    看看这个:How to convert DateTime to VarChar

    【讨论】:

    • JoinDate 是一个日期时间类型
    • 奇怪,我在 VS 2012 中遇到类似错误的唯一方法是混合数据类型。作为 DateTime 列没有问题,您可以为表添加 DDL 吗?
    • DDL 是什么意思?问题出在 SQL Server 层,而不是 Visual Studio 应用程序
    • DDL(数据定义语言)是用于在 SQL ex 中构建表的代码:CREATE STATEMENT 我正在寻找的是您的列的数据类型,因为它们看起来像根据在此线程中找到的一些结果导致问题。
    猜你喜欢
    • 1970-01-01
    • 2011-12-04
    • 2014-09-01
    • 2017-04-21
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多