sql server 中如何插入一条时间记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 中如何插入一条时间记录相关的知识,希望对你有一定的参考价值。

insert into 员工 values(7369, '任盈盈' ,' 职员',('1980-12-17','yyyy-mm-dd'), 7902, 800, null, 20)
这样显示to_date是不可识别的函数名

在sqlserver中插入是使用insert语句来完成,

更新是使用update语句来完成

在sqlserver中,以当前日期为例子,当前日期是用getdate()来完成

分2种情况

1、你的表中只有一个时间字段,直接采用insert就可以

语句如下:

insert into table(时间字段)
select getdate()

 

2、你的表里有多个字段,需要更新某个字段里的内容为当天

语句如下:

update table 时间字段=getdate()
where 具体条件

参考技术A to_date 是 Oracle 的函数,用于字符串转换为日期的

SQL Server 可以使用

CONVERT(DATETIME, '1980-12-17', 120)
的方式来写:

下面是执行例子:
SELECT CONVERT(DATETIME, '1980-12-17', 120)
-----------------------
1980-12-17 00:00:00.000
(1 行受影响)追问

嗯 成功了谢谢,不过120表示什么呢?

本回答被提问者和网友采纳

如何在SQL Server中使用用户定义的表类型插入数据时避免重复记录

我试图使用我的.net应用程序在数据库中插入整个模型。我使用的是用户定义的表类型。

这是我的程序和用户定义的表;我正在使用SQL Server 2012。

CREATE TYPE [dbo].[TmpAccessRequest] AS TABLE
(
    [RequestId] [int] NULL,
    [RequesterID] [int] NULL,
    [RequestType] [int] NULL,
    [NextApprover] [int] NULL,
    [RequestStatus] [varchar](100) NULL,
    [Delegation] [int] NULL,
    [CreatedOn] [date] NULL,
    [CreatedBy] [varchar](100) NULL,
    [Description] [varchar](max) NULL,
    [IsSepecialRequest] [bit] NULL,
    [DelegationDetailID] [int] NULL,
    [IsActive] [bit] NULL,
    [IsDeleted] [bit] NULL,
    [ModifiedOn] [date] NULL
)
GO

CREATE PROCEDURE [dbo].[proc_SaveAccessRequest] 
   (@TmpAR TmpAccessRequest READONLY,
    @IsUAMSRequest BIT,
    @RequestID INT OUTPUT) 
AS  
BEGIN
    INSERT INTO tblRequests (RequesterID, RequestType, NextApprover, RequestStatus,
                             Delegation, CreatedOn, CreatedBy, Description,
                             IsSepecialRequest, DelegationDetailID, IsActive, IsDeleted, ModifiedOn)
        SELECT
            RequesterID, RequestType, NextApprover, RequestStatus,
            Delegation, CreatedOn, CreatedBy, Description,
            IsSepecialRequest, DelegationDetailID, IsActive, IsDeleted, ModifiedOn
        FROM
            @TmpAR  

    SET @RequestID = SCOPE_IDENTITY()

    --SET @RequestID=IDENT_CURRENT('tblRequests') 
    SELECT @RequestID
END

我想检查重复数据是否不应同时插入。那么我该如何使用用户定义的表类型呢?

答案

请查找对脚本所做的更改,以避免插入重复记录。所以我认为两列数据应该是唯一的,以避免重复用于用户理解目的

 CREATE PROCEDURE [dbo].[proc_SaveAccessRequest] 
(
  @TmpAR TmpAccessRequest READONLY,
  @IsUAMSRequest bit,
  @RequestID int OUTPUT
) 
AS  
BEGIN

     Insert into tblRequests
    (
       RequesterID
      ,RequestType
      ,NextApprover
      ,RequestStatus
      ,Delegation
      ,CreatedOn
      ,CreatedBy
      ,[Description]
      ,IsSepecialRequest
      ,DelegationDetailID
      ,IsActive
      ,IsDeleted
      ,ModifiedOn
    )
    SELECT
       RequesterID
      ,RequestType
      ,NextApprover
      ,RequestStatus
      ,Delegation
      ,CreatedOn
      ,CreatedBy
      ,Description
      ,IsSepecialRequest
      ,DelegationDetailID
      ,IsActive
      ,IsDeleted
      ,ModifiedOn
     FROM @TmpAR  
     WHERE NOT EXISTS ( SELECT 1 
                        FROM tblRequests i
                        INNER JOIN @TmpAR o  
                            ON i.RequesterID = o.RequesterID
                         AND i.RequestType = o.RequestType 
                         AND i.NextApprover = o.NextApprover)

     SELECT @RequestID = SCOPE_IDENTITY()

     SELECT @RequestID
END

以上是关于sql server 中如何插入一条时间记录的主要内容,如果未能解决你的问题,请参考以下文章

如何直接在sql server中添加一条数据

sql server返回插入记录的ID(多条记录)

如何 SQL 为另一个表中的每个 id 插入一条记录? [复制]

SQL Server 如何查询最后一条记录

如何在单个查询(sql server)中插入1条记录后检索自动增量值

当值与 SQL Server 中的最后一条记录之间存在特定差距时如何选择值