0

ストアド プロシージャの条件に基づいて日時ベースを挿入する際に助けが得られることを願っています。

条件が真の場合、真夜中に追加のパンチを挿入する次のテスト クエリがあります。

Declare
@Clock datetime = dateadd(dd ,0, datediff(dd,0,'02-07-2013'))
,@Status varchar(50) = 'CLockin'
,@UID varchar(10) ='001'
,@UserName varchar(50)='ABC'


IF EXISTS (SELECT UID, Clock From TestRecord
Where CONVERT(VARCHAR(8),Clock,108) >'00:00:00' and
CONVERT(VARCHAR(8),Clock,108) <'02:00:00')

INSERT INTO TestRecord 
(CLock,Status,UID,UserName)
Values (@Clock,@Status,@UID,@UserName)

したがって、次の表では、

Date          UID        UserName          Status          Clock
====          ===        ========          ======          =====
02/06/2012    001        ABC               Clockin         17:00
02/07/2013    001        ABC               ClockIn         00:59

上記のクエリは、深夜に追加のパンチを作成します。

Date          UID        UserName          Status          Clock
====          ===        ========          ======          =====
02/06/2012    001        ABC               Clockin         17:00
02/07/2013    001        ABC               ClockIn         00:00
02/07/2013    001        ABC               ClockIn         00:59

そして、上のテーブルは次のようなものに移動されます。

Date        UID       Name         In        Out       Total
====        ===       ====         ==        ===       =====
02/06       001       ABC          17:00     17:00      0
02/07       001       ABC          00:00     00:59      0.98

私は何日も前の日に別のパンチを挿入する方法を見つけようと試みてきました. つまり、02/07 は真夜中のパンチを取得しますが、02/06 も 02/06 23:59 のパンチを必要とし、上記の同じクエリを使用してテストしましたが、取得した最も近いものは次のとおりです。

declare @Clock datetime =CONVERT(VARCHAR(12),'23:59')

それは私に与えました。1900/01/01 23:59

私の質問はです。日付と時刻を正しい形式で取得するには、クエリをどのように実行すればよいですか? 条件から日付を使用する方法はありますか。つまり、テーブルから datetime >00:00 および <02:00 の場合、テーブルから datetime 00:00 および datetime -1 23:59 を挿入します。

ありがとうございました..

ここで善良な人々からのヒントを参考にして、さらに掘り下げてください。このように2つの部分で日時を宣言できるようになりました..

Declare @date datetime = dateadd(dd ,-1, datediff(dd,0,'02-07-2013'))
,@time datetime = CONVERT(VARCHAR(12),'23:59')
,@mydt datetime
SET @mydt=Cast(@date+ ' ' + @time as datetime) 

次に、値を使用して挿入を実行します (@mydt...)

他の絶望的な試みは、次のことを行うことでした..

Declare @date datetime 
SET @date = (Select Clock from CONVERT(VARCHAR(8),Clock,108) >'00:00:00' 
and CONVERT(VARCHAR(8),Clock,108) <'02:00:00')  

しかし、それはエラーをスローします。サブクエリが複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後にある場合、またはサブクエリが式として使用されている場合、これは許可されません。

4

0 に答える 0