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

时间:2017-04-07 09:47:01

标签: sql sql-server sql-server-2008

实际上,当我通过SQL查询提取这些日期时,我在SQL表中有不同的日期,datetime字段的日期应该有固定的日期。

示例:(DD-MM-YYYY)日应为" 7" > (7-MM-YYYY)

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

有人可以帮我解决这个问题。在此先感谢。

6 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

使用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;

答案 3 :(得分:0)

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

选择datetimecolumn +(yourparamfixedday-datepart(dd,datetimecolumn))

答案 4 :(得分:0)

假设您可能需要更改日期编号示例

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)

答案 5 :(得分:0)

我会这样:

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

112会将日期作为未分离的ISO 返回(今天我们会得到20170407)。将其转换为VARCHAR(6)将隐含地删除当天的部分(201704)。

现在我们添加一天并再次使用CONVERT112,但现在以DATE作为目标类型。

要注意的一件事:您添加的日期必须是两位数。您可以使用

实现此目的
DECLARE @int INT=7;
SELECT REPLACE(STR(@int,2),' ','0');