Sql server SSIS-将日期列从每月的15日修改为1日

Sql server SSIS-将日期列从每月的15日修改为1日,sql-server,excel,visual-studio-2008,ssis,Sql Server,Excel,Visual Studio 2008,Ssis,大家好。有人知道如何正确地将此语句写入 显示每个月的第一天?我有一个正在导入的Excel文件 使用MS SSIS(VisualStudio 2008)进入服务器。日期是每月一次,但最后几个月是6月15日、5月、4月等。我的意图是 它们都是本月的第一天。2015年1月之前的所有月份均为本月1日 上面的SQL查询是我在Excel源代码编辑器中编写的 谢谢这将始终为您提供本月的第一天 SELECT * FROM [MarkTSK] WHERE [MonthlyDt] IS NOT NULL --AN

大家好。有人知道如何正确地将此语句写入 显示每个月的第一天?我有一个正在导入的Excel文件 使用MS SSIS(VisualStudio 2008)进入服务器。日期是每月一次,但最后几个月是6月15日、5月、4月等。我的意图是 它们都是本月的第一天。2015年1月之前的所有月份均为本月1日

上面的SQL查询是我在Excel源代码编辑器中编写的


谢谢

这将始终为您提供本月的第一天

SELECT * FROM [MarkTSK] 
WHERE [MonthlyDt] IS NOT NULL
--AND
--SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
要将表中的日期从每月的第一个月往后拉,应该这样做

SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)
用于提取月份和年份,并手动添加到日期中。 比如:

SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,[MonthlyDt]),0) FROM [MarkTSK] 
WHERE [MonthlyDt] IS NOT NULL
(免责声明:未经测试的代码)


谢谢大家。上面的剧本对我有用。所有不在本月1日的日期现在显示为1日。

DATEADD(dd,-(DAY(MonthlyDt)-1),MonthlyDt)
如果您列出多个日期以及查询的预期结果(即场景之前和之后),将会有所帮助。谢谢。我收到一条错误消息-数据流任务[Excel Source[1]]出错:SQL命令未返回任何列信息。即使您没有对此进行测试,您的思路是什么?你怎么会这样?如果
MonthlyDt
不为空,则将其撕成碎片,然后将碎片重新组合在一起(同时将日部分替换为
01
)将导致日期也不为空。如果
MonthlyDt
为null,那么执行相同的操作将得到null。因此,您的建议将给出与OP当前代码完全相同的结果。无论如何,OP不会在一个月的第一个月内查找。起初我以为他也是,但后来我又重读了标题。OP想要修改返回的日期值,将每个日期更改为同一个月的第一个。@AndriyM我的印象是OP希望将每个月修改为第一个,如5月15日至5月1日,3月18日至3月1日,他说“显示每个月的第一个?”如果不是这样的意图,我建议把答案重新写清楚。我将在稍后删除此答案,这样就不会让任何人感到困惑。是的,目标是更改为1,正如OP刚刚确认的那样,但更改的目的是在输出中返回更改的日期。您正在WHERE子句中构建更改的日期–这对输出没有影响。谢谢您的JRadich。我有几个月的时间回到年初;因此,如果您在电子表格中有一个日期列表,并且希望使用SQL查询来查找该日期的月初,则查询必须考虑这些日期,对吗?没错。事实上,我可以追溯到2年前(每月一次)。它们都显示了本月的1号,但从1月份开始,我一直在显示本月的15号。我的意图是在导入上面的dataReplace
GETDATE()
时,将其更改回第一个日期,使用任意日期,它将返回所提供日期的月份第一个。我的想法是让它动态运行,而不是单独执行SELECT语句。此语句位于Excel编辑器中
SELECT Convert(date, DatePart('yyyy', [MonthlyDt]) + DatePart('mm', [MonthlyDt]) + '01' ) FROM [MarkTSK] 
WHERE [MarkTSK] IS NOT NULL
SELECT *, DATEADD('d',-DAY([MonthlyDT])+1, [Date])  AS [MonthD]
FROM [MarkTSK] 

WHERE [MonthlyDT] IS NOT NULL