Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中使用存储过程插入select语句_Sql_Sql Server_Function_Tsql_Stored Procedures - Fatal编程技术网

在SQL Server中使用存储过程插入select语句

在SQL Server中使用存储过程插入select语句,sql,sql-server,function,tsql,stored-procedures,Sql,Sql Server,Function,Tsql,Stored Procedures,我试图将一些列从一个表移动到另一个表中,在此过程中,我希望在插入另一个表之前将datetime列转换为Date和time。为此,我使用一个存储过程来应用该条件。但我不能应用这样的条件。下面是我正在使用的表格 dbo.出席人数 Id UserId Status CheckIn CheckOut Date ----

我试图将一些列从一个表移动到另一个表中,在此过程中,我希望在插入另一个表之前将datetime列转换为Date和time。为此,我使用一个存储过程来应用该条件。但我不能应用这样的条件。下面是我正在使用的表格

dbo.出席人数

Id                                      UserId                                  Status  CheckIn             CheckOut            Date
---------------------------------------------------------------------------------------------------------------------------------------------
0083c28b-249e-4072-b6ac-822d7e4d2d35    5e397451-362f-4e1f-b257-0406fd8da3f8    Late    09:04:00.0000000    00:00:00.0000000    2017-01-16
0146da5c-0eae-4b4f-b9e6-2b5bffb34235    b3e0dc55-f738-478f-87ff-f52dae1f662a    Late    09:33:00.0000000    00:00:00.0000000    2017-01-24
023903d9-b6be-40fa-828e-83bee1748864    5e397451-362f-4e1f-b257-0406fd8da3f8    Full Day    08:45:00.0000000    00:00:00.0000000    2017-02-20
043030e5-fcc2-4409-b804-25fd5cce6a90    366c3918-8569-46ef-aa6c-d95e941bd255    Full Day    09:00:00.0000000    00:00:00.0000000    2017-03-13
05a15650-04c5-49f2-9476-046e15c4d917    b3e0dc55-f738-478f-87ff-f52dae1f662a    Late    09:13:00.0000000    00:00:00.0000000    2017-01-10
09f41fb0-6060-432f-91b6-c53be457f415    b3e0dc55-f738-478f-87ff-f52dae1f662a    Late    09:01:00.0000000    00:00:00.0000000    2017-01-21
dbo.UserActivity

DateTime                   UserId
----------------------------------------------------------------
2017-01-16 17:41:23.670    8c2d617b-8361-432a-9f19-0c70f81764fa
2017-01-31 08:59:22.093    3f8fc164-92e9-4714-a42c-8ae8a2f923a9
2016-09-30 11:41:41.100    da42b0f4-7d0b-4b68-ad81-12bea670c218
2017-01-20 14:19:10.613    8c2d617b-8361-432a-9f19-0c70f81764fa
2017-02-09 17:28:39.373    ac0ce1ad-f021-4fab-ab5e-9bbd48004a4b
质疑


我应该在哪里将datetime分别转换为考勤表中的date、checkin和checkout列的时间和日期(从用户活动表加上
考勤表的id)?

您可以在您的过程中使用它

INSERT INTO dbo.Attendence(Id,UserId, Date, CheckIn, CheckOut) 
SELECT 
    NEWID() AS Id
    , UserId
    , CAST([DateTime] AS DATE) as dt
    , CAST([DateTime] AS TIME) as chkin
    , CAST([DateTime] AS TIME) as chkout 
FROM dbo.UserActivity UA
WHERE NOT EXISTS
    ( SELECT * FROM dbo.Attendence A 
        WHERE A.UserId = UA.UserId 
            AND A.Date = CAST(UA.[DateTime] AS DATE) 
            AND A.CheckIn = CAST(UA.[DateTime] AS TIME)
            AND A.CheckOut = CAST(UA.[DateTime] AS TIME) )
你可以用这个

SELECT Id=NEWID(),
        UserId,
        SELECT CAST(CONVERT(VARCHAR(10),DateTime,111) AS DATE) AS dt,
        SELECT CONVERT(VARCHAR(12), DateTime, 108) AS chkin,
        SELECT CONVERT(VARCHAR(12), DateTime, 108) AS chkout,
FROM dbo.UserActivity

我应该在哪里将id声明为newId()?您可以将like
newId()添加为id
您想对所有行使用相同的id还是对每行使用唯一的id?每行使用唯一的id加上排除已存在的行考勤表中相同用户id和日期时间的记录非常感谢@sarslan:)
SELECT Id=NEWID(),
        UserId,
        SELECT CAST(CONVERT(VARCHAR(10),DateTime,111) AS DATE) AS dt,
        SELECT CONVERT(VARCHAR(12), DateTime, 108) AS chkin,
        SELECT CONVERT(VARCHAR(12), DateTime, 108) AS chkout,
FROM dbo.UserActivity