2017-04-07 50 views
0

其實我在SQL表中有不同的日期,當我通過SQL查詢拉那些日期時,日期時間字段應該有固定的一天。在拉數據的同時在數據時間的特定日期硬編碼 - SQL

實施例:(DD-MM-YYYY)天應爲 「7」>(7-MM-YYYY)

  • -08-2007> -08-2007
  • -12-2013> -12-2013
  • -03-2017> -03-2017

有人可以幫助我解決這個問題。提前致謝。

+0

請分享您迄今所做的努力。 –

回答

1

找到7和原始日期之間的差異,並將其添加到原始日期:

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

使用DATEFROMPARTS:只更新從2012年的作品 - OP已標記的SQL Server 2008的

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

OP已經標記了SQL Server 2008 - 直到2012年才添加'DATEFROMPARTS'。 – Bridge

+0

@Bridge感謝 - 我沒有看到標籤。 – cloudsafe

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; 
0

假設你的領域是datetime數據類型和您的固定一天是整型。

選擇datetimecolumn +(yourparamfixedday-DATEPART(DD,datetimecolumn))

+0

如果日期與月份或年份相同,會發生什麼情況? – cloudsafe

+0

@cloudsafe日期與年份相同嗎?我沒有得到你。 – Coder1991

+0

如果被更換的月份的日期與月份相同,即08/08/2008 – cloudsafe

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) 
0

我會走這條路:

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

CONVERT與格式112將返回日期未分離的ISO(今天我們會得到20170407)。將此轉換爲VARCHAR(6)將隱含地刪除當天的部分(201704)。

現在我們添加了一天,並與112再次CONVERT使用,但現在DATE爲目標類型。

有一點要記住:您添加的日期必須是兩位數。您可以通過

DECLARE @int INT=7; 
SELECT REPLACE(STR(@int,2),' ','0'); 
相關問題