sql-server - 如何在 SQL SERVER 中实现 SET_DATE_PART
问题描述
我想实现 Informatica 的 SET_DATE_PART 函数,它将日期列的一部分设置为 SQL Server 中的特定值。我有一个表达式,我试图在其上实现任何类似于SET_DATE_PART
Informatica 函数的函数。这个表达
case
when ISDATE(SUBSTRING(COLUMN,1,7))=1 and CAST(SUBSTRING(COLUMN,1,2) AS INTEGER)<=7 then
DATEADD(MM,-1,CONVERT(DATE,SUBSTRING(COLUMN,1,7),106))
ELSE CONVERT(DATE,SUBSTRING(COLUMN,1,7),106)
END AS TRANSFORMED FROM TABLE
ORDER BY 1
YYYY-MM-DD
对我来说工作正常并以格式返回日期值。现在我想将表达式的日期部分中的值设置为 01。我尝试了 SQL 服务器的许多功能,例如 DATEPART、DATEADD,但没有任何效果
解决方案
简化您的问题,让我们假设您已经拥有数据类型为date
. 一旦你有了它,你可以得到一个不同的日期,它与提供的日期和月份相同,但日期设置为 1,如下所示:
declare @d date = sysdatetime();
select @d as old, DATEFROMPARTS(
datepart(year, @d),
datepart(month, @d),
1
) as new;
推荐阅读
- javascript - Jquery 正则表达式模式不验证
- java - Apache Camel jackson unmarshaller 不工作
- python - 如果 Python 中的 scipy.optimize.dual_annealing 函数,R 等效项是什么
- mongodb - MONGODB 聚合管道
- javascript - 如何在本地应用程序中使用 Node/Express 将本地视频文件加载到 HTML5 播放器中?
- java - Springboot Elasticsearch 使用 Spring 数据 - 我不能使用存储库自己的方法
- javascript - 使用来自 json 源的数据填充引导表
- android - Expo / React Native WebView,动画中的onPress事件在Android上不起作用
- python - 添加一个新的 cpython 关键字
- javascript - 用 JavaScript 做一个问答游戏,我如何创建一个数据库来保存用户的分数?