私は次を使用したクエリがあります
date_add(DATE_FORMAT(ss.week_startdate,'%y-%m-%d'),INTERVAL (tt.day_id- 1 )DAY) as date
フィールドのデータ型はdatetime
であり、結果の日付は次のようになります
2015-04-06
しかし、望ましい結果はこのようなものです
2015-04-6
必要ありません0
の前。私はこれを試しました
date_add(DATE_FORMAT(ss.week_startdate,'%y-%m-%e'),INTERVAL (tt.day_id- 1 )DAY) as date
しかし、うまくいきませんでした。誰でも助けてくれますか?
間違った順序で適用された関数があります。最初に日付演算(_date_add
_など)を実行し、format
を最後に適用する必要があります。
_DATE_FORMAT( DATE_ADD(ss.week_startdate, INTERVAL (tt.day_id - 1) DAY),
'%Y-%m-%e')
_
4桁の年には_%Y
_ではなく_%y
_も必要です。
また、多くの冗長な操作を行うため、最初のクエリも変更することをお勧めします。
_date_add(
DATE_FORMAT(ss.week_startdate,'%y-%m-%d'),
INTERVAL (tt.day_id- 1 )DAY
)
as date
_
DATE_FORMAT(ss.week_startdate,'%y-%m-%d')
'15-04-28'
_。date_add( previous_result, INTERVAL (tt.day_id-1) DAY)
previous_result
_は文字列なので、date
またはdatetime
に変換する必要があります。 2年形式が誤った日付につながらないのは偶然です。この変換後、date_add()
が計算されます。(変換後の)最初の引数はdate
であり、時間だけではなく日のみを追加するため、結果もdate
になります。as day
_が考慮されますが、前の操作でdate
も生成されたため、これは何もしません。%Y-%m-%d
_であり、必要な形式を取得しています。全部で3つの変換(_datetime -> char -> date -> char
_)が必要なのは1つだけです。