1

我有一个有两列的表,它们都是日期时间值 例如,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

日期时间字段保存日期时间。您如何看待日期时间是您用于检查数据的工具的结果,无论是 Management Studio,还是您自己的从数据库打印某些内容的软件。

我强烈建议将其保留为日期时间字段。这将允许您执行与日期相关的操作,例如减法和比较。如果您想更改用户查看日期的方式,请在表示层格式化您的日期。

您发布的代码中发生的事情是您将值设置为A与它已经相同的日期。您通过另一种格式的字符串设置该值这一事实没有关系,SQL Server 将始终必须将您的字符串输入解析为它可以理解的日期。这就是您没有收到错误消息的原因。该操作正在运行,只是它没有改变任何东西。

于 2012-09-07T07:35:28.427 回答
0

这是因为列的数据类型是DATEorDATETIME并且它具有特定的格式。如果要使用特定格式更新列,请创建另一列并设置其 datatype VARCHAR。我相信112yyyymmdd格式。

我强烈建议您保持原样。数据库是数据的存储,不用于查看目的。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 回答