错误以特定格式显示日期时间

时间:2016-04-06 12:59:38

标签: sql sql-server

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) 

4 个答案:

答案 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