1

Iiには、次の方法でSQL Serverに値が格納されています。02-Jul-12 12:00:00 AMここでは、時間と分、秒は、など02-Jul-12 12:15:52 PMのように02-Jul-12 6:02:12 AMなります。

次のように、時刻を省略して日付に基づいてデータを取得するwhere条件が必要です。where some_Date='02-Jul-12'

どうすればいいですか?

4

5 に答える 5

3
SELECT * FROM whatever WHERE some_Date LIKE '02-Jul-12%';
于 2013-01-07T14:05:45.350 に答える
1
 SELECT * FROM dbo.tbl_MyTable
    WHERE 
 REPLACE(CONVERT(VARCHAR(9), DateTimeValueColumn, 6), ' ', '-')='02-Jul-12'

また

コードの変更については、getdate 関数 voncert を使用する代わりに、datetime 形式の日付文字列を使用し、このフォロー クエリを比較してください。

SELECT * FROM dbo.tbl_MyTable
WHERE 
CAST(CONVERT(CHAR(10), DateTimeValueColumn, 102) AS DATE) = 
            CAST(CONVERT(CHAR(10),GETDATE(),102) AS DATE)
于 2013-01-07T14:05:31.940 に答える
1

SQL2008 以降を使用している場合は、にキャストできDATETIMEますDATE

この投稿を参照してください: http://blog.sqlauthority.com/2012/09/12/sql-server-get-date-and-time-from-current-datetime-sql-in-sixty-seconds-025-video/

ただし、WHERE 句では、次のように日付を検索する方が適切です。

DECLARE @startDate DATETIME = '02-Jul-2012'
DECLARE @endDate DATETIME = DATEADD(DAY, 1, @startDate)

SELECT * FROM [table] WHERE [some_Date] BETWEEN @startDate AND @endDate
于 2013-01-07T14:06:02.753 に答える
1

今日の日付 (時刻ではない) の行を選択するには

select * from myTable where datediff(dd, dateColumn, getdate()) = 0
于 2013-01-07T14:12:19.977 に答える
1

日付を文字として保存する場合 (推奨されません)、少なくとも ISO 形式を使用する必要があります: YYYY-MM-DD hh:mm:ss。これにより、日付は並べ替えや比較に役立ちます ("<" は機能し、">" は機能し、"between" は等号と同様に機能します)。

日付を抽出するには、 を使用できますleft(datestr, 10)。フォーマットでは、次を使用します。

where left(datestr, 9) = '01-Jan-13'

フィールドをdatetimeまたはとして格納しsmalldatetimeている場合、文字列として格納されていると考えるかもしれません。ではない。これらは、特定の日付からの日数として保存され、日の部分は小数日として保存されます。SQL Server 2005 以降を使用している場合、最善の方法は次のとおりです。

where cast(datetime as date) = '2013-01-01'  -- I recommend ISO formats, even for constants.  '20130101' is even better
于 2013-01-07T14:12:03.693 に答える