SQLSERVER更新日期字段里的一部分

本文介绍了一个SQL更新语句,用于将数据库中特定表的记录年份从2013年更新为2017年。该操作通过计算目标字段与指定日期之间的年份差并进行调整来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


需求:

将2013年的数据更新到2017年,语句如下:

 update StrongWater_TZ.dbo.ST_RIVER_R set TM=dateadd(YEAR, datediff(YEAR, TM, '2017') ,TM) where YEAR(TM)=2013
       

### 如何在 SQL Server 中仅获取 `datetime` 字段日期部分 为了从 `datetime` 类型字段中提取只有日期的部分,在 SQL Server 中有多种方法可以实现这一目标。 #### 方法一:使用 `CAST` 函数 通过将 `datetime` 转换为 `date` 类型来去除时间部分。此方式简单直观,适用于只需要日期而不需要时间的情况: ```sql SELECT CAST(date_in AS date) FROM table_name; ``` 这种方法会直接丢弃掉任何与时间有关的信息[^3]。 #### 方法二:利用 `CONVERT` 函数配合特定样式码 另一种常见做法是采用 `CONVERT` 函数并指定合适的格式化参数(style code),比如使用风格编号 120 或者其他适合的形式: ```sql SELECT CONVERT(varchar(10), date_in, 120) FROM table_name; ``` 这行代码将会把 `datetime` 值转换成形如 'YYYY-MM-DD' 的字符串表示形式[^5]。 如果希望保留原始列的数据类型作为 `datetime` 同时去掉其时间成分,则可以在上述基础上再次将其转化为 `datetime`: ```sql SELECT CONVERT(datetime, CONVERT(varchar(10), date_in, 120)) FROM table_name; ``` 这种方式能够确保最终结果仍然是一个有效的 `datetime` 对象,只是被设定了零点时刻。 #### 方法三:应用 `DATEADD` 和 `DATEDIFF` 组合技巧 对于某些特殊情况下的需求,还可以考虑如下方案——先计算给定日期距离公元纪元起点所经过的日数差值,再加上该起始日期本身: ```sql SELECT DATEADD(dd, DATEDIFF(dd, 0, date_in), 0) FROM table_name; ``` 这假设系统的默认日期是从1900-01-01开始计数;因此当我们将输入日期减去这个基础日期后再加回去时就得到了仅有日期的结果[^1]。 以上三种途径都可以有效地帮助用户完成从完整的 `datetime` 数据项抽取纯日期的任务。具体选择哪一种取决于实际应用场景和个人偏好等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值