我有一个有两列的表,它们都是日期时间值 例如,A 列的值为 '07/09/2012 14:13:34' 现在,我想通过语句将 A 列更新为 yyyymmdd
Update Change_Date
SET A = CONVERT(VARCHAR(8),A,112)
它在我的表 Change_Date 中显示成功消息但没有效果(没有更新到 20120907 的值)。
任何帮助将不胜感激,谢谢!
我有一个有两列的表,它们都是日期时间值 例如,A 列的值为 '07/09/2012 14:13:34' 现在,我想通过语句将 A 列更新为 yyyymmdd
Update Change_Date
SET A = CONVERT(VARCHAR(8),A,112)
它在我的表 Change_Date 中显示成功消息但没有效果(没有更新到 20120907 的值)。
任何帮助将不胜感激,谢谢!
日期时间字段保存日期时间。您如何看待日期时间是您用于检查数据的工具的结果,无论是 Management Studio,还是您自己的从数据库打印某些内容的软件。
我强烈建议将其保留为日期时间字段。这将允许您执行与日期相关的操作,例如减法和比较。如果您想更改用户查看日期的方式,请在表示层格式化您的日期。
您发布的代码中发生的事情是您将值设置为A
与它已经相同的日期。您通过另一种格式的字符串设置该值这一事实没有关系,SQL Server 将始终必须将您的字符串输入解析为它可以理解的日期。这就是您没有收到错误消息的原因。该操作正在运行,只是它没有改变任何东西。
这是因为列的数据类型是DATE
orDATETIME
并且它具有特定的格式。如果要使用特定格式更新列,请创建另一列并设置其 datatype VARCHAR
。我相信112
是yyyymmdd
格式。
我强烈建议您保持原样。数据库是数据的存储,不用于查看目的。DATETIME
如果您的数据类型是或,则很容易执行日期任务DATE
。例如,如果您想检索具有特定格式的日期,那就是您转换日期的时间。
希望这是有道理的。
您可以选择指定格式的日期列,也可以创建一个选择 yyyymmdd 格式的列值的视图:
SELECT CONVERT(VARCHAR(8), A, 112) FROM Change_Date