2013-03-29 18 views
17

私のテーブルには2013-12-14 05:00:00.000の日付があります。SQLのDatetimeフィールドからの時刻のみを更新

私はその日付の時刻のみを更新したいと思います。 E.Gから2013-12-14 04:00:00.000

datetimeフィールドから時刻のみを更新するクエリはありますか?

+0

** 2008 **、それは、非常に簡単になります。 –

+1

@marc_s ORM実装を使用している場合は、両方のフィールドを連結したビューが必要なので、これは非常に苦労しませんか?これはおそらく上の質問とは関係ありません。私はちょうど興味があります:) – david99world

+0

問題の内容を理解するのに十分な情報が含まれていません。なぜ列の値を '2013-12-14 04:00:00.000'に更新できないのですか?または、日付の設定にかかわらず、時刻の値を04:00に設定しますか?または、現時点から1時間を引いたかったり... ...? –

答えて

37
UPDATE MyTable 
SET MyDate = DATEADD(HOUR, 4, CAST(CAST(MyDate AS DATE) AS DATETIME)) 

またはこの

UPDATE MyTable 
SET MyDate = DATEADD(HOUR, 4, CAST(FLOOR(CAST(MyDate AS FLOAT)) AS DATETIME)) 
+0

エレガントで便利なソリューションは、それは魅力のように動作します。 +1 –

+0

すてきな解決策! – nicolas

1
UPDATE TABLE_NAME SET DATETIME_FIELD = CAST(CAST(CONVERT(DATE, DATETIME_FIELD,101) AS VARCHAR) + ' 2' + ':' + '22' AS DATETIME) WHERE (OUR_CONDTTION) 
0
DECLARE @d datetime; 
SELECT @d = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0); 

DECLARE @t time(7); 
SET @t = CAST('10:10:10' AS time); 

SELECT CONVERT(datetime, CONVERT(varchar(10), CONVERT(date, @d, 101)) + ' ' + CONVERT(varchar(8), @t)); 
0
DECLARE @Time as TIME; 
DECLARE @Date as DATETIME; 

SELECT @Time = CONVERT(TIME, '2016-01-01 09:30:00.000'); 
SELECT @Date = CONVERT(date, GETDATE()); --2017-03-10 16:37:34.403 

SELECT DATEADD(MINUTE, DATEPART(MINUTE, @Time), DATEADD(HH, DATEPART(HOUR, @Time), @Date)) 

OUTPUT: 2017年3月10日09:30:00.000

1

ユーザー1以下更新します時間はのみコラム - あなたは別途 `TIME`列に時刻部分を保存した場合、あなたが個別に更新する必要がある場合、SQL Serverでは

select CONVERT(varchar(10),datecolumn, 120) + ' 12:34:56', 
     CONVERT(varchar(10),datecolumn, 120) + ' 00:00:00', 
     RSLV_LTR_INITIAL_DUE_DT, * 
from twhere able1  
関連する問題