0

SQL Server テーブルに ( ) 列がありMeasureDateTimeます。nvarchar(50)

私は得る必要があります

  |measureFilePath   |    MeasureDateTime     |       MeasureName       |
  |  12Nc121         |Thu Jun 19 15:00:05 2011| Annulus 4th RMS (Waves) |
  |  12NB121         |Thu Jul 19 15:38:05 2012| 3.0mm 4th RMS (Waves)   |
  |  12NXc121        |Tue May 15 12:13:02 2012| BC (mm)                 |
  |  12NA121         |Tue May 15 12:13:02 2012| CT (mm)                 |
  |  12Nc111         |Tue May 15 12:13:02 2012| Reference Angle (deg.)  |
  |  12Nc231         |Wed May 15 12:03:02 2013| Temperature (C)         |

MeasureDateTimeたとえば、列を使用して過去 6 か月のデータを取得したいとします。

しかし、問題はMeasureDateTimeタイプnvarcharです。

誰でもこれを行う方法を知っていますか? それは可能ですか?

4

3 に答える 3

2

試す

CONVERT(datetime,SUBSTRING(MeasureDateTime,4,100),101)

varchar 列をdatetimeフォーマットに変換します。

SUBSTRING(MeasureDateTime,4,100)日付文字列の曜日部分を削除すると、format を指定したCONVERT()呼び出しで101米国型の日付形式が受け入れられます。

選択は次のようになります

SELECT * FROM table WHERE DATEADD(month, 6, CONVERT(datetime,SUBSTRING(MeasureDateTime,4,100),101)) > getdate()

前に挿入された時刻情報を無視しました。ここで、日付変換の別の試み:

convert(datetime,substring(stuff(dt,11,0,right(dt,5)),4,21),101)

このアプローチは、文字列の長さが等しいことに依存しています。それがここで与えられているかどうかはわかりません。

于 2013-09-10T20:35:50.533 に答える
0

挿入時にこのテーブルのトリガーを使用してみてください。@cars10 が提供するソリューションを試して、日付を取得してdatetimeフィールドに保存してください。常に日時フィールドをフィールドでdatetimeはなく保持しvarcharます。後で日付に基づいてレコードを取得する必要があり、このdatetimeフィールドが役立つことがわかります。

于 2013-09-11T04:37:11.090 に答える