web-dev-qa-db-ja.com

datetime列が今日の日付と等しいSQL

作成日が今日の日付であるデータベースからレコードを取得するにはどうすればよいですか?

SELECT [Title], [Firstname], [Surname], [Company_name], [Interest] 
FROM [dbo].[EXTRANET_users] 
WHERE DATE(Submission_date) = DATE(NOW())

これは、SQL Server 2000を使用している場合は機能せず、提出日は日時フィールドです

39
Beginner

SQL Serverを使用しているようです。この場合、GETDATE()またはcurrent_timestampはあなたを助けるかもしれません。ただし、システムの日付を比較する日付の形式(タイムゾーン、粒度など)が一致することを確認する必要があります

例えば.

where convert(varchar(10), submission_date, 102) 
    = convert(varchar(10), getdate(), 102)
47
davek

これを試してもらえますか?

_SELECT [Title], [Firstname], [Surname], [Company_name], [Interest] 
FROM [dbo].[EXTRANET_users] 
WHERE CAST(Submission_date AS DATE) = CAST(GETDATE() AS DATE)
_

T-SQLには、C#のような「暗黙の」キャスティングはありません-CAST(またはCONVERT)を明示的に使用する必要があります。

また、GETDATE()または_CURRENT_TIMESTAMP_を使用して、「現在」の日付と時刻を取得します。

更新: SQL Serverに対して作業しているため20-これらのアプローチは今のところ機能しません。代わりにこれを試してください:

_SELECT [Title], [Firstname], [Surname], [Company_name], [Interest] 
FROM [dbo].[EXTRANET_users] 
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, submission_date)) = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
_
28
marc_s

別の方法があるかもしれませんが、これは動作するはずです:

SELECT [Title], [Firstname], [Surname], [Company_name], [Interest] 
FROM [dbo].[EXTRANET] 
WHERE day(Submission_date)=day(now) and 
     month(Submission_date)=month(now)
     and year(Submission_date)=year(now)
5
Allie

簡単な方法は、このような条件を使用することです(目的の日付を使用> GETDATE()-1)

sqlステートメントの「日付固有」> GETDATE()-1

0
Neyomal