1

varchar データ型のテーブルに 2 つの列があります。

date と type は、テーブルの列名です。

テーブルに存在するデータは次のようになります

date        time
20090610    132713
20090610    132734

これらの 2 つの列のデータを連結し、datetime 形式で表示するには、ms sql サーバー クエリが必要です。

注 : 1. これら 2 つの列のデータ型は現在変更できません。2.やってみた

select convert(datetime,date + time)

「文字列から日付や時刻を変換するときに変換に失敗しました」と表示されます。

可能な解決策を提案します。

4

4 に答える 4

2

これは日時を返します。一番下の行は、テーブルに置き換えることです

select convert(datetime,date,112)+
coalesce(stuff(stuff(rtrim(time), 5,0,':'), 3,0,':'), '') newdate
from 
(VALUES ('20090610','132713'),('20090610', '132734'),('20090610', '      ')) yourtable(date,time)

結果:

newdate
2009-06-10 13:27:13.000
2009-06-10 13:27:34.000
2009-06-10 00:00:00.000
于 2012-12-20T08:26:05.967 に答える
0
CREATE FUNCTION [dbo].[DateTimeAdd] 
( 
      @datepart         date, 
      @timepart         time 
) 
RETURNS datetime2 
AS 
BEGIN 
      RETURN DATEADD(dd, DATEDIFF(dd, 0, @datepart), CAST(@timepart AS datetime2)); 
END

申し訳ありませんが、日付と時刻を varchar として保存することについての質問に少し触れていませんでした。したがって、この関数を使用する前に、これらのデータ項目を変換する必要があります。

于 2012-12-20T09:00:44.720 に答える
0
CREATE TABLE #Table 
(
[date] VARCHAR(100),
[time] VARCHAR(100)
)
INSERT INTO #Table VALUES
('20090610','132713'),
('20090610','132734')   

;WITH Bits_CTE
    AS
    (
    SELECT 
        [Date],
        [Time],
        [hrs] = CONVERT(INT,SUBSTRING([Time], 1, 2)),
        [mns] = CONVERT(INT,SUBSTRING([Time], 3, 2)),
        [secs] = CONVERT(INT,SUBSTRING([Time], 5, 2))
    FROM #Table
    )
SELECT 
    [Date],
    [Time],
    DATEADD(HOUR,[hrs],
    DATEADD(MINUTE,[mns],
    DATEADD(SECOND,[secs],[Date]))) 
FROM Bits_CTE
于 2012-12-20T08:44:08.097 に答える
0

を使用して取得できます

SELECT 
convert(varchar, convert(datetime, date), 111)
+ ' ' + substring(time, 1, 2)
+ ':' + substring(time, 3, 2)
+ ':' + substring(time, 5, 2)
于 2012-12-20T07:58:30.043 に答える