1

私は2つの列を持つテーブルを持っています.それらはすべてdatetime値です.列Aの値は '07/09/2012 14:13:34' です.今、列Aをステートメントでyyyymmddに更新したいです.

 Update Change_Date
    SET A = CONVERT(VARCHAR(8),A,112)

成功したメッセージが表示されますが、テーブル Change_Date には効果がありません (20120907 への更新値はありません)。

どんな助けでも大歓迎です、ありがとう!

4

3 に答える 3

1

A datetime fields saves a date time. How you see that date time is a result of the tool you're using to inspect the data, whether it is Management Studio, or your own software that's printing something from the database.

I strongly recommend keeping it as a datetime field. This will allow you to do date-related operations, such as subtractions and comparisons. If you want to change how your users see the date, then format your date at the presentation layer.

What's happening in the code you've posted is that you're setting the value of A to the same date that it already is. The fact that you're setting that value by means of a string in another format has no relation, SQL server will always have to parse your string input into a date that it can understand. This is why you're not getting an error message. The operation is working, only it's not changing anything.

于 2012-09-07T07:35:28.427 に答える
0

これは、列のデータ型がDATEorDATETIMEであり、特定の形式であるためです。特定の形式で列を更新する場合は、別の列を作成し、そのデータ型を作成しVARCHARます。112フォーマットだと思いyyyymmddます。

そのままにしておくことを強くお勧めします。データベースはデータのストレージであり、表示目的ではありません。データ型がDATETIMEまたはの場合、日付のタスクを簡単に実行できますDATE。たとえば、特定の形式で日付を取得する場合は、その時点で日付を変換します。

これが理にかなっていることを願っています。

ここに画像の説明を入力

于 2012-09-07T07:33:03.500 に答える
0

指定した形式で日付列を選択するか、yyyymmdd 形式で列の値を選択するビューを作成できます。

SELECT CONVERT(VARCHAR(8), A, 112) FROM Change_Date
于 2012-09-07T07:36:17.103 に答える