数据表里面有DateTime字段, 日期和时间同时进行时间区间查询
有表
字段名称 字段类型
GUID VARCHAR(
50
)
str_DateTime DATETIME
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
想实现查询2005年5月1日
-
2006年1月1日
时间在18:00到19:00的所有GUID
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
select
*
from
TableName
where
convert(
char
(
10
),str_DateTime,
120
) between
'
2005-05-01
'
and
'
2006-01-01
'
and
convert(
char
(
5
),str_DateTime,
114
) between
'
18:00
'
and
'
19:00
'
在工作中也遇到了一个这样的问题
20060214T18000000转化为2006
-
02
-
14
18
:
00
:
00
declare @var varchar(
50
)
set
@var
=
'
20060214T18000000
'
select left(@var,
4
)
+
'
-
'
+
substring(@var,
5
,
2
)
+
'
-
'
+
substring(@var,
7
,
2
)
+
'
'
+
substring(@var,
10
,
2
)
+
'
:
'
+
substring(@var,
12
,
2
)
+
'
:
'
+
substring(@var,
14
,
2
)
把字段转化为DateTime 类型
CONVERT(datetime, LEFT(dbo.SENTR_ExLog.IOTime,
4
)
+
'
-
'
+
SUBSTRING(dbo.SENTR_ExLog.IOTime,
5
,
2
)
+
'
-
'
+
SUBSTRING(dbo.SENTR_ExLog.IOTime,
7
,
2
)
+
'
'
+
SUBSTRING(dbo.SENTR_ExLog.IOTime,
10
,
2
)
+
'
:
'
+
SUBSTRING(dbo.SENTR_ExLog.IOTime,
12
,
2
)
+
'
:
'
+
SUBSTRING(dbo.SENTR_ExLog.IOTime,
14
,
2
)) AS IOTime屏蔽1900
-
1
-
1日的日期不显示
select Guid,ProjectName,StartDate,Case EndDate when
'
1900-1-1 0:00:00
'
then
''
else
Convert(
char
(
10
),EndDate,
120
) end AS EndDate,Memo,IsDelete
from pgProject
转载于:https://www.cnblogs.com/aaliujing/archive/2006/12/19/596775.html