0

現在の年の当月の 1 日から現在の日付までの日数を取得しようとしています。では、このスクリプトの何が問題なのですか? そして正しいものは?

select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),102),GETDATE());  
4

3 に答える 3

2

月の 1 日からの日数は常に???に等しいDAY(YourDate)か、可能性としてありませんか?DAY(YourDate) - 1

3 月 22 日、その数は 22 (または 21 - 数え方によって異なります) - いいえ???

では、これはどうですか:

SELECT
    DaysFromFirstOfMonth = DAY(GETDATE()) - 1

それはあなたが探しているものですか??

于 2012-04-08T09:35:37.057 に答える
2

DAY(@marc_s がコメントで述べているように) または のいずれかを使用してDATEPART、作業中の日付の「月の日」部分を表す整数を返すことをお勧めします。

例えば:

SELECT DAY(GETDATE()),DATEPART(day,GETDATE())

予定 (本日、2012 年 4 月 8 日):

8,8

そこから必要な調整を行うことができます。

于 2012-04-08T09:36:26.090 に答える
0

スタイルの値が間違っているようです。102 は ansi-dates (yy.mm.dd) 用です。英国/フランスの日付 (dd/mm/yy) を使用する場合は、値 103 を使用する必要があります。

select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),103),GETDATE());  

http://www.w3schools.com/sql/func_convert.aspを参照してください。

于 2012-04-08T09:24:26.053 に答える