实际上,当我通过SQL查询提取这些日期时,我在SQL表中有不同的日期,datetime字段的日期应该有固定的日期。
示例:(DD-MM-YYYY)日应为" 7" > (7-MM-YYYY)
有人可以帮我解决这个问题。在此先感谢。
答案 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
)。
现在我们添加一天并再次使用CONVERT
与112
,但现在以DATE
作为目标类型。
要注意的一件事:您添加的日期必须是两位数。您可以使用
实现此目的DECLARE @int INT=7;
SELECT REPLACE(STR(@int,2),' ','0');