sql - 在同一个表中将数据从一列复制到另一列会将原始列中的数据设置为空
问题描述
我创建了一个[LastLoginDate-NoTime]
数据类型为 的新列Date
。我已经有另一个数据类型[LastLoginDate]
的列Datetime
。
我正在尝试使用此查询将值从LastLoginDate
列复制到列:LastLoginDate-NoTime
UPDATE [dbo].[SapUsersExt]
SET [LastLoginDate] = [LastLoginDate-NoTime]
但我遇到的问题是,当我执行此查询时,它将原始列中的数据设置为空。
屏幕截图:错误
我还尝试将LastLoginDate
新列中的数据从日期格式转换为日期格式,LastLoginDate-NoTime
以便我可以在我的应用程序中使用它。我该怎么做?
解决方案
我正在尝试使用此查询将 LastLoginDate 列中的值复制到 LastLoginDate-NoTime 列
在这种情况下,您正在完全倒退- 您应该改用以下 SQL:
UPDATE [dbo].[SapUsersExt]
SET [LastLoginDate-NoTime] = [LastLoginDate]
第一列 - 紧随SET
- 是您的值将写入的目标列。
符号之后的第二列=
是数据的来源(列或表达式)。
你有它倒退 - 用实际值设置列,全部NULL
......
这当然只适用于“一次性”更新 -当插入新数据时,这不会使您的列随着时间的推移保持同步。对于这种情况,您需要一个计算列
ALTER TABLE dbo.SapUsersExt
ADD LastLoginDateOnly AS CAST(LastLoginDate AS DATE) PERSISTED;
或触发器。
或者,您甚至不需要实际存储该仅日期值 - 只需使用
SELECT
CAST(LastLoginDate AS DATE),
.......
如果您需要仅日期值LastLoginDate
推荐阅读
- python - 为什么正则表达式不能正常替换文本
- linux - 给Linux当前目录下的所有子目录添加后缀
- sql - Group by 和 order By 一起导致错误
- sql - 重定位文件后 SQL Server 恢复数据库
- php - 我在 init.php 文件中定义了一个变量(VOTING_ALLOWED),但我没有在其他页面中获得值
- sql-server - 如何在 SQL Server 扩展事件中单独跟踪游标语句?
- python-3.x - PyCharm Git VCS Grays Out 添加选项
- html - 制作简单的汉堡菜单
- mysql - 为什么我们对 MySQL 和 PostgreSQL 没有不同的文件扩展名?
- r - 重命名包含空格的数据框列名称