0

このクエリを使用して日付と時刻を表示しています。日付形式をスペースで指定する 113 in 変換関数を使用し、それを / に置き換えました。今は、日付と時刻を区切る / を取り出したいだけです。

 SELECT [ID]
      ,REPLACE(convert(varchar, ReceivedMessages.ReceivedDateTime, 113), ' ','/') as RecievingDate
      FROM [CmsSMSDb].[dbo].[ReceivedMessages] 
      where Convert(date,ReceivedDateTime)>= @DateFrom AND Convert(date,ReceivedDateTime)<= @DateTo

次の結果が得られます。

09/Jun/2014/10:04:07:000

それが私が望むものです、それは完全に機能しますが、問題は、2014年以降に「/」を削除したいことです。09/Jun/2014 10:04:07:000

しかし、他の場所では「/」は同じままである必要がありますが、2014 年以降は表示されません。

どうやって ?

4

5 に答える 5

1

汚いが動作する:

SELECT 
      LEFT(REPLACE(convert(varchar, ReceivedMessages.ReceivedDateTime, 113), ' ','/'), 11) + ' ' +
      RIGHT(REPLACE(convert(varchar, ReceivedMessages.ReceivedDateTime, 113), ' ','/'), 12)
      as RecievingDate
FROM [CmsSMSDb].[dbo].[ReceivedMessages] 
      where Convert(date,ReceivedDateTime)>= @DateFrom AND Convert(date,ReceivedDateTime)<= @DateTo
于 2014-06-09T10:34:10.010 に答える
1

SQLServer 2012 以降を使用している場合は、新しい関数を使用できますFORMAT

SELECT [ID]
     , FORMAT(ReceivedDateTime, 'dd/MMM/yyyy hh:mm:ss:ms') as RecievingDate
FROM   [CmsSMSDb].[dbo].[ReceivedMessages] 
WHERE  Convert(date,ReceivedDateTime)>= @DateFrom 
  AND  Convert(date,ReceivedDateTime)<= @DateTo

FORMAT関数hhでは 12 時間制の場合、24 時間制の場合はgetまたはにHH追加して、違いを確認してみてくださいttAMPM

SELECT FORMAT(SYSDATETIME()(), 'dd/MMM/yyyy hh:mm:ss:ms tt') _12
     , FORMAT(SYSDATETIME()(), 'dd/MMM/yyyy HH:mm:ss:ms') _24

また、パラメータに一致するように格納されている (インデックスにある可能性がある) データを変更しないでください。

SELECT [ID]
     , FORMAT(ReceivedDateTime, 'dd/MMM/yyyy hh:mm:ss:ms') as RecievingDate
FROM   [CmsSMSDb].[dbo].[ReceivedMessages] 
WHERE  ReceivedDateTime >= Cast(@DateFrom AS DateTime2)
  AND  ReceivedDateTime <= DateAdd(dd, 1, DateAdd(ms, -1, Cast(@DateTo as DateTime2)))
于 2014-06-09T12:23:02.730 に答える
0

replace関数を削除するだけ

SELECT [ID], 
       convert(varchar, ReceivedMessages.ReceivedDateTime, 113) as RecievingDate
  FROM [CmsSMSDb].[dbo].[ReceivedMessages] 
 where Convert(date,ReceivedDateTime) >= @DateFrom 
   AND Convert(date,ReceivedDateTime)<= @DateTo
于 2014-06-09T10:32:41.300 に答える