在拉取数据时对数据时间中的特定日期进行硬编码 - SQL



实际上,当我通过SQL查询拉取它们时,我在SQL表中有不同的日期,日期时间字段的日期应该有固定的日期。

示例:(日-月-年(日应为"7">(7 毫米-年(

  • 2007/8/10> 2007/08/07
  • 2013/12/27> 2013/12/07
  • 2017-03-01> 2017-03-07

有人可以帮助我吗?提前谢谢。

找出 7 和原始日期日期之间的差值,并将其添加到原始日期:

SELECT DATEADD(DAY, 7 - DAY(OriginalDate), OriginalDate)

使用DATEPART去掉月份和年份部分。将它们转换为 varchar 并与 07 连接。

查询

select '07-' + 
cast(DATEPART(mm, [date_column]) as varchar(2)) + '-' + 
cast(DATEPART(yyyy, [date_column]) as varchar(4))
from your_table_name;

假设您可能需要更改日期数字示例

DECLARE @dayNum char(2)
SELECT @dayNum = '07'
select @dayNum + Right(convert(char(10),getdate(),105),8)

如果不是这种情况,您可以这样做

select '07'+ Right(convert(char(10),'10-08-2007',105),8)

我会这样走:

SELECT CONVERT(DATE,CONVERT(VARCHAR(6),GETDATE(),112)+'25',112);

格式为 112CONVERT会将日期返回为未分离的 ISO(今天我们会得到 20170407 (。将其转换为VARCHAR(6)将隐式地切掉当天的部分(201704(。

现在我们添加一个日期并再次使用 CONVERT112 ,但现在将DATE作为目标类型。

要记住的一件事:您添加的日期必须是两位数。您可以通过以下方式实现此目的

DECLARE @int INT=7;
SELECT REPLACE(STR(@int,2),' ','0');
<</div> div class="one_answers">

使用 DATEFROMPARTS: 更新仅适用于 2012 - OP 已标记 SQL-Server 2008

select DATEFROMPARTS ( year('10-08-2007'), month('10-08-2007'), 7 )

假设您的字段是日期时间数据类型,而您的固定日期是整数类型。

选择日期时间列

+(你的参数固定日期-日期部分(dd,日期时间列((

最新更新