現在の今月の1日から現在の日付までの日数を取得しようとしています。 このスクリプトで何が問題になっていますか?そして正しいものは?日付を使用して月の最初の日から日数を取得する方法
select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),102),GETDATE());
現在の今月の1日から現在の日付までの日数を取得しようとしています。 このスクリプトで何が問題になっていますか?そして正しいものは?日付を使用して月の最初の日から日数を取得する方法
select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),102),GETDATE());
月の初日からの日数は、常にDAY(YourDate)
またはおそらくDAY(YourDate) - 1
に等しくなりませんか?
3月22日に、その番号は..... 22(または21 - あなたのカウント方法によって異なります) - いいえ???
それでは、どのようにこのことについて:
SELECT
DaysFromFirstOfMonth = DAY(GETDATE()) - 1
は、あなたが探しているものということです?
あなたは正しいですが、同じサンプルで 'DateDIFF'を使う方法は? – Salahaldin
@Salahaldin:**なぜあなたは 'DATEDIFF'を主張しますか?これは単に不必要に複雑でエラーが発生しやすい..... –
あなたのスタイルの価値は間違っているようです。 102は、ANSI-日付(YY.MM.DD)のためである - あなたはフランス語/英国の日付(DD/MM/YY)を使用したい場合は、値103を使用する必要があります。
select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),103),GETDATE());
varchar値 '/'をデータ型intに変換するときに変換に失敗しました。 – Salahaldin
申し訳ありません私はこれを試すことができませんでしたので、私は他の間違いを見ませんでした:あなたはおそらく日時に変換する必要があります、varcharに変換する必要があります。しかし、私は以下の答えのいくつかは、問題にもっと良く近づいていると思います。 – Johanness
(@marc_sがコメントで言うように)、またはDATEPART
のいずれかを使用して、作業している日付の「月の日」部分を表す整数を返すことをお勧めします。
例えば:
SELECT DAY(GETDATE()),DATEPART(day,GETDATE())
ウィル(今日、2012年4月8日)リターン:
8,8
あなたはそこから必要な調整を行うことができます。
月の第1日からの日数は、常に「DAY(YourDate)」と同じではありませんか? 3月22日、その数は..... 22、いいえ??? –
@marc_s - それから '-1'かもしれないと思います(投稿コードは最初の月に0を返すので) –
@Damien_The_Unbeliever:はい、おそらく - あなたが正しいです。 –