1

現在の日付を特定の時刻に割り当てるにはどうすればよいですか?

データ型の列EXIT_DTに午前8時00分00秒としましょうdatetime??

GETDATE()AS EXIT_DTを試しましたが、現在の日時が表示されます。SQL Server 2005を使用しています。何か助けはありますか?

今日が2013年1月3日で、結果を2013年1月3日午前8時00分00秒の日時データ型として返したいとします。ステートメントytdを実行すると、結果は2013年1月2日8:00:00AMになります。

4

6 に答える 6

7

この式は、呼び出された日の 08:00 を常に生成し、文字列操作を回避します。

select DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T08:00:00')

文字列との間で変換を行うソリューションは避けてください。datetime 値を文字列として扱うことは、バグの最大の原因の 1 つです。

2001 年 1 月 1 日から経過した日数 (整数として) を計算することによって機能します。次に、同じ日数を 2001 年 1 月 1 日の 08:00 に追加します。

于 2013-01-03T10:06:39.313 に答える
1

あなたはこれを試すことができます:

DECLARE  @dt datetime;

SET @dt=CONVERT(DateTime, CONVERT(VARCHAR,GETDATE(),101)+' 8:00:00')

SELECT CONVERT(VARCHAR, @dt, 101)+'  '+ LTRIM(RIGHT(CONVERT(VARCHAR(20),@dt, 100), 7))

形式については、http: //www.sql-server-helper.com/tips/date-formats.aspxにアクセスしてくださいdatetime

于 2013-01-03T10:03:05.057 に答える
0

これは少し愚かですが、動作します

select cast(cast(getdate() as date) as datetime) + '08:00:00'

をキャストしgetdate()date時間を失うのは、キャストしてdatetime8時間を追加するよりもです。

varcharへの暗黙の変換を回避したい場合はdatetime、次のバージョンを使用できます。

select cast(cast(getdate() as date) as datetime) 
     + convert(datetime,'08:00:00',114)
于 2013-01-03T10:09:01.330 に答える
0

これも機能しています。(1)。ISO format (yyyymmdd) 今日の日付を(2)に変換します。時間を追加します (3)。日時に戻す

Select convert(datetime, convert(varchar, getdate(),112) + ' ' + '8:00:00AM')
--Results
2013-01-03 08:00:00.000

特定の形式が必要な場合は、再度 varchar に変換する必要があります。

于 2013-01-03T10:14:44.523 に答える
0

特定の形式を取得するには、getdate() と一緒に Convert を使用します。

元:

SELECT CONVERT(VARCHAR(30),GETDATE(),113) 
于 2013-01-03T09:44:38.433 に答える
0
-- AM/PM --
SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI:SS AM') FROM dual
/

-- 24 hrs format --
SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH24:MI:SS') FROM dual
/
于 2013-01-03T14:01:35.110 に答える