前の日付からすべての行を1つの表から選択するための良いSQL文を探しています。この表には、1つのdatetime列があります。私は、SQL Serverに2005前の日付からすべての行を選択するSQL文
答えて
は、今日は時間を取得していない:
SELECT dateadd(day,datediff(day,0,GETDATE()),0)
は時間をyestersdayない取得:からすべての行について
SELECT dateadd(day,datediff(day,1,GETDATE()),0)
クエリを昨日:
select
*
from yourTable
WHERE YourDate >= dateadd(day,datediff(day,1,GETDATE()),0)
AND YourDate < dateadd(day,datediff(day,0,GETDATE()),0)
を使用していますと、今、それをテストすることはできませんが、:
select * from tablename where date >= dateadd(day, datediff(day, 1, getdate()), 0) and date < dateadd(day, datediff(day, 0, getdate()), 0)
SQLで "今日" の値を取得するには:
convert(date, GETDATE())
"昨日" を取得するには:
DATEADD(day, -1, convert(date, GETDATE()))
「今日のX日を差し引く」:-1を-Xに変更します。
だから、すべて昨日の行について、次のようになります。
select * from tablename
where date >= DATEADD(day, -1, convert(date, GETDATE()))
and date < convert(date, GETDATE())
「日付」データ型:あなたは、より詳細に間隔を制御する必要がある場合
、あなたのような何かを試してみてください午前0時から午後12時までではなく、あなたがクエリを実行した時から発生 – rudimenter
私の間違い。私はあなたがSQL Server 2005を扱っているのを見ていませんでした。実際、私のコードはSQL Server 2008のみで動作します。 – Konamiman
私はいつもDATEADD(日、....)は無駄だったと思って、日付に対して日数を加えたり引いたりしてください:_SELECT GETDATE() - 1_ –
これは本当に古いスレッドですが、ここにそれがあります。 2つの異なる節ではなく、1つ以上の節。私は以下の構文をA日付からレコードを選択するために使用します。あなたが日付範囲を望むなら、前の答えが行く方法です。
SELECT * FROM TABLE_NAME WHERE
DATEDIFF(DAY, DATEADD(DAY, X , CURRENT_TIMESTAMP), <column_name>) = 0
それを伝えるために別の方法として、 "昨日" 以上の場合Xはなり-1昨日の記録
SELECT * from table_name where date_field = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);
のために...
Select * from TABLE
where Day(DateField) = (Day(GetDate())-1)
and Month(DateField) = (Month(GetDate()))
and Year(DateField) = (Year(getdate()))
これはおそらく動作しません。 1月1日、毎月の初日にもうまくいきます。しかし、その場で効果的です。
明らかな答えが見つからなかったようです。コラム(DatetimeColumn)は以下のクエリを使用することができ、タイムスタンプと日時であるテーブル(TTableと)からのすべてのデータを取得するには:
SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- yesterday
これは、簡単に、今日に変更することができ、先月、昨年、など
これはそれを行う必要があります:SQL Serverで
WHERE `date` = CURDATE() - INTERVAL 1 DAY
は次のように実行します。
where cast(columnName as date) = cast(getdate() -1 as date)
時刻書式の問題を避けるには、式の両辺を日付にキャストする必要があります。私はdatetime型に代わり、時間値のままと計算を使用する場合のSQL Server 2005には存在しdoesntの
declare @start datetime = cast(getdate() - 1 as date)
declare @end datetime = cast(getdate() - 1 as date)
set @end = dateadd(second, 86399, @end)
- 1. 選択前の日付によるSQLの並べ替えヘルプ
- 2. SQL Serverテーブルから日付を選択
- 3. 前の日付の選択
- 4. 今日の日付から行を選択するには?
- 5. 前の日付をすべて選択し、mysqlを使用して6か月以内にすべての日付を選択してください
- 6. 日付の前にディスクを選択してください - SQL
- 7. 日付欄から日付を選択
- 8. Mysql日付で日付を選択してからグループで列を並べる
- 9. すべてのテーブルから日付を使用して選択する
- 10. 日付範囲の間のすべての日付を選択する-TERADATA
- 11. 今日より前の日付を持つSQLを選択するレコード
- 12. 月の各日から行を選択するSQL
- 13. SQL - 2テーブルから比較日付で行を選択する方法
- 14. 私のリストのすべてのエントリがその日付のテーブルにあるテーブルから日付を選択
- 15. SQL - 最も近い前の日付を選択
- 16. 特定の日付の間にecordsを選択して注文するSQL
- 17. SQLテーブルから日付で最高のセールを選択
- 18. 指定された特定の日付からすべてのセールを選択
- 19. カレンダーから今日の日付を選択する方法
- 20. データベースから月の日付を選択
- 21. ダイナミックMAX(日付)を使用して2つの日付の間のすべての行を選択
- 22. PHPでSQLの2つの日付間の行を選択
- 23. 各IDの最大日付がすべての行を選択します
- 24. SQL、日付/時刻の選択
- 25. SQL:日付範囲の選択
- 26. datepicker:日付の前に日付の選択を無効にする
- 27. AngularJS Calendarは、選択した日付の1日前に選択します。
- 28. 日付範囲内のテーブルからすべての日付を選択し、空の日付に1行を含める
- 29. PHPのsql日付文字列から前日の曜日を取得
- 30. 日付ピッカーのjsで選択できる日付の選択
それでも時間が必要な場合は? – Neo
@ashuthinks、あなたのコメントは私には意味がありません。元の質問は、前日から行を取得する方法を尋ねます。これを行うには、今日の日付のみ(時間なし)と昨日の日付(時間なし)を取得する必要があります。これらの(時代を超越した)日付は 'WHERE'節で使用します。しかし、 'SELECT *'は元の時刻の日付を返します。 –
datediffは「不正なパラメータ・カウント・エラー」を示します。 http://stackoverflow.com/a/18926156/3007408によれば、datediffは2つのパラメータしか使用できません。任意の解決策? – Sp0T