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'
我该怎么做?
答案 0 :(得分:3)
SELECT * FROM whatever WHERE some_Date LIKE '02-Jul-12%';
答案 1 :(得分:1)
SELECT * FROM dbo.tbl_MyTable
WHERE
REPLACE(CONVERT(VARCHAR(9), DateTimeValueColumn, 6), ' ', '-')='02-Jul-12'
或
代码中的chage而不是使用getdate函数voncert你是dateline格式的datestring并做比较这个跟随查询将适合你
SELECT * FROM dbo.tbl_MyTable
WHERE
CAST(CONVERT(CHAR(10), DateTimeValueColumn, 102) AS DATE) =
CAST(CONVERT(CHAR(10),GETDATE(),102) AS DATE)
答案 2 :(得分:1)
如果您使用的是SQL2008或更高版本,则可以将DATETIME
转换为DATE
。
但是在WHERE子句中,最好在日期之间进行搜索,如下所示:
DECLARE @startDate DATETIME = '02-Jul-2012'
DECLARE @endDate DATETIME = DATEADD(DAY, 1, @startDate)
SELECT * FROM [table] WHERE [some_Date] BETWEEN @startDate AND @endDate
答案 3 :(得分:1)
如果您将日期存储为字符 - 不建议使用 - 您至少应使用ISO格式:YYYY-MM-DD hh:mm:ss。这使得日期对于排序和比较非常有用(&#34;&lt;&#34;工作,&#34;&gt;&#34;工作,&#34;&#34;工作以及等于)。< / p>
要提取日期,您可以使用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
答案 4 :(得分:1)
选择包含今天日期(而不是时间)的行
select * from myTable where datediff(dd, dateColumn, getdate()) = 0