2017-04-07 9 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日と1日の差を求めて元の日付に加算します。

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のタグが付いています.DATEFROMPARTSは2012年まで追加されていません。 – 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

の場合、置き換えられる月の日が2008年8月8日の月と同じ場合 – 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

私はこの道を行くと思います。format 112

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

CONVERT未分離のISO(今日我々が20170407になるだろう)として日付を返します。これをVARCHAR(6)に変換すると、暗黙のうちにその日の部分(201704)が切り捨てられます。

CONVERT112をもう一度使用しますが、今度はDATEをターゲットにします。

あなたが追加する日は、の2桁である必要があります。あなたはこれで達成することができます

DECLARE @int INT=7; 
SELECT REPLACE(STR(@int,2),' ','0'); 
関連する問題