select mydate
from Tble_xxx
where CONVERT(varchar(20), mydate, 120)
BETWEEN CONVERT(varchar(20), (@startdate, 'yyyy-MM-dd HH:m:ss:mmm', 'en-US') , 120)
AND CONVERT(varchar(20), (@enddate, 'yyyy-MM-dd HH:m:ss:mmm', 'en-US'), 120)
当我尝试在数据之间获取日期并更改特定格式日期时间时,则发生错误。请帮助我...
select mydate
from Tble_xxx
where CONVERT(varchar(20), mydate, 120)
BETWEEN CONVERT(varchar(20), (N'08/01/2015 12:00:00', 'yyyy-MM-dd HH:m:ss:mmm', 'en-US') , 120)
AND CONVERT(varchar(20), (N'06/04/2015 12:00:00', 'yyyy-MM-dd HH:m:ss:mmm', 'en-US'), 120)
答案 0 :(得分:0)
试试这个:让mydate成为“日期时间”,不要转换它......而是:
where mydate between CONVERT(datetime, '2015-01-08 12:00:00', 120) and CONVERT(datetime, '2015-04-06 12:00:00', 120)
yyyy-mm-dd hh:mm:ss(24h)
答案 1 :(得分:0)
我不清楚为什么你需要转换日期,但你可以做这样的事情:
SELECT mydate
FROM Tble_xxx
where mydate between CONVERT(datetime, '2015-01-08 12:00:00', 120) and CONVERT(datetime, '2015-04-06 12:00:00', 120)
答案 2 :(得分:0)
试试这个
DECLARE @startdate DATETIME='08/01/2015 12:00:00'
DECLARE @enddate DATETIME='06/04/2015 12:00:00'
select mydate
from Tble_xxx
where CAST(mydate AS DATE) BETWEEN CAST(@startdate AS DATE) AND CAST(@enddate AS DATE)
答案 3 :(得分:0)
SQL Server支持字符类型(char,nchar,varchar,nvarchar)和日期/时间类型(日期时间,日期,时间等)之间的隐式转换,因此您不需要使用显式Convert
语句。
请参阅此处的数据类型转换表:https://msdn.microsoft.com/en-gb/library/ms191530.aspx
对于字符/日期时间转换,它还假设字符数据将在&n; yyyy-mm-dd hh:mm:ss.mmmm' (ODBC规范格式)。
yyyy-mm-dd hh:mi:ss.mmm(24h) ODBC规范(毫秒)默认为time,date,datetime2和datetimeoffset
参见"备注"此处的日期和时间样式部分:https://msdn.microsoft.com/en-GB/library/ms187928.aspx
所以 - 假设你的" myDate" field是日期时间或日期类型 - 您的SQL语句可以简单如下:
SELECT mydate
FROM Tble_xxx
WHERE mydate BETWEEN '2015-01-08 12:00:00' AND '2015-04-06 12:00:00'
如果您在对其他答案之一的评论中提到,您的日期已经作为日期时间参数传递,您可以使用:
SELECT mydate
FROM Tble_xxx
WHERE mydate BETWEEN @startdate AND @enddate