使用 WHERE (datediff(dd,dtmreceive,getdate()) = 0)不能保证查到当天的记录,理论上它应该是查到距离当前系统时间前后12个小时以内的记录。
这个也许很有用(没试)!create function YMD (@dt datetime) returns datetime as begin return convert(char(8),@dt,112) end
其实也用不着这么麻烦,只要不要只把日期僵化地看成那种中间带横线的格式就行了。declare @dt datetime,@st datetime set @dt='2003-2-3' set @st='20030203' if @dt=@st print '就是这样简单' else print '不可能吧!'
从下表看120代表 yyyy-mm-dd hh:mi:ss(24h)
,两个时间要在秒上相等,恐怕不容易,如果用112,应该没有问题.
-------------------------------------------------------------------Without
century
(yy) With
century
(yyyy) Standard Input/Output**
- 0 or 100 (*) Default mon dd yyyy hh:miAM (or PM)
1 101 USA mm/dd/yy
2 102 ANSI yy.mm.dd
3 103 British/French dd/mm/yy
4 104 German dd.mm.yy
5 105 Italian dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 or 109 (*) Default + milliseconds mon dd yyyy hh:mi:ss:mmmAM (or PM)
10 110 USA mm-dd-yy
11 111 JAPAN yy/mm/dd
12 112 ISO yymmdd
- 13 or 113 (*) Europe default + milliseconds dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 or 120 (*) ODBC canonical yyyy-mm-dd hh:mi:ss(24h)
- 21 or 121 (*) ODBC canonical (with milliseconds) yyyy-mm-dd hh:mi:ss.mmm(24h
begin
return convert(char(8),@dt,112)
end
set @dt='2003-2-3'
set @st='20030203'
if @dt=@st print '就是这样简单' else print '不可能吧!'