6

数値であるテーブルの日付キーを日時キーに変換しようとしています。私の現在のクエリは次のとおりです。

  SELECT 
  DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
  SUBSTRING([Date],10,2)+':'+
  SUBSTRING([Date],12,2)+':'+
  SUBSTRING([Date],14,2)+'.'+
  SUBSTRING([Date],15,3))) [Date],
  [Object] AS [Dataset],
  SUBSTRING(Parms,1,6) AS [Media]
  FROM (Select CONVERT(VARCHAR(18),[Date]) [Date], 
  [Object],
  MsgId,
  Parms
  FROM JnlDataSection) A
  Where MsgID = '325' AND
  SUBSTRING(Parms,1,6) = 'V40449' 
  Order By Date DESC;

日付列はこれを示しています: 2013-06-22 13:36:44.403

これを 2 つの列に分割したい: Date: 2013-06-22

時間 (マイクロ秒を削除): 13:36:44

既存のクエリを変更して、必要な出力を表示できる人はいますか? それは大歓迎です。注意: SQL Server Management Studio 2008 を使用しています。

4

4 に答える 4

20
SELECT CONVERT(DATE,[Date])
SELECT CONVERT(TIME(0),[Date])
于 2013-07-16T14:18:26.310 に答える
16

convert() 関数を調査することをお勧めします。

  select convert(date, getdate()) as [Date], convert(varchar(8), convert(time, getdate())) as [Time]

与える

  Date       Time
  ---------- --------
  2013-07-16 15:05:43

これらを元の SQL にラップすると、明らかに非常に醜いものになります。

SELECT convert(date, 
      DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3)))) [Date],
  convert(varchar(8), convert(time, 
      DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3))))) [Time],

  [Object] AS [Dataset],
  SUBSTRING(Parms,1,6) AS [Media]
  FROM (Select CONVERT(VARCHAR(18),[Date]) [Date], 
  [Object],
  MsgId,
  Parms
  FROM JnlDataSection) A
  Where MsgID = '325' AND
  SUBSTRING(Parms,1,6) = 'V40449' 
  Order By Date DESC;

複雑さを軽減するために、この一部をビューに移動したい場合があります。

于 2013-07-16T14:05:17.510 に答える
0

日付、時刻、日、月、年、時、分、秒、AM/PM を取得するには、次のシナリオを使用します。

select 
   UpdatedOn , CONVERT(varchar,UpdatedOn,100) DateTime, CONVERT(varchar,UpdatedOn,10) Date , 
   CONVERT(varchar,UpdatedOn,108) Time , substring(CONVERT(varchar,UpdatedOn,106),1,2) Day, 
   substring(CONVERT(varchar,UpdatedOn,106),4,3) CMonth,    
   substring(CONVERT(varchar,UpdatedOn,105),4,2) 
   NMonth, substring(CONVERT(varchar,UpdatedOn,106),8,4) Year,      
   left(right(CONVERT(varchar,UpdatedOn,100),7),2) Hours_12, 
   substring(CONVERT(varchar,UpdatedOn,108),1,2) Hours_24, 
   substring(CONVERT(varchar,UpdatedOn,108),4,2) Minutes, 
   substring(CONVERT(varchar,UpdatedOn,108),7,2) Second, right(CONVERT(varchar,UpdatedOn,100),2)    
   AM_PM 
from 
   dbo.DeviceAssignSim where AssignSimId=55;
于 2014-10-10T11:37:48.937 に答える