我想让日期([date],Datetime 类型,格式如:2008-6-10)早于今天的记录的[readtype] 字段的值为‘old’,日期为今天的[readtype] 字段值设为‘new’,咋整呢,用下面的语句不行啊。
UPDATE [news] SET [readtype] = 'old' WHERE [date] <>" + DateTime.Today.ToShortDateString();
一运行全部变成old,
这句
AccessDataSource1.UpdateCommand = "UPDATE [news] SET [readtype] = 'new' WHERE [date] =" + DateTime.Today.ToShortDateString();
没有一个变为‘new’的。但实际上有[date]字段的值和DateTime.Today.ToShortDateString()的值是相等的啊。
UPDATE [news] SET [readtype] = 'old' WHERE [date] <>" + DateTime.Today.ToShortDateString();
一运行全部变成old,
这句
AccessDataSource1.UpdateCommand = "UPDATE [news] SET [readtype] = 'new' WHERE [date] =" + DateTime.Today.ToShortDateString();
没有一个变为‘new’的。但实际上有[date]字段的值和DateTime.Today.ToShortDateString()的值是相等的啊。
不要用 ToShortDateString,它好像六月是用'6'而为是'06'substring(convert(nvarchar(100),getdate(),20),1,10) ---sqlstring s=DateTime.Today.ToString("yyyy-MM-dd"); //C#
UPDATE [news] SET [readtype] = 'new' WHERE datediff(d,date,getdate())=0
string today = DateTime.Now.ToString("yyyy-MM-dd");
"UPDATE [news] SET [readtype] = 'old' WHERE [date] <" + today;
"UPDATE [news] SET [readtype] = 'new' WHERE [date] >=" + today;
这样就只能和当天的0点比较,
如2008-06-10 0:00:00 而2008-06-10其他时间就和这个时间都不相等了,所以都是old
on ceshi
for insert
as
begin
update tp set readtype=case when datediff(dd,dt,getdate())=0 then '新' else '旧' end from ceshi tp
endinsert into ceshi(dt) select getdate()
insert into ceshi(dt) select '2008-06-09 16:00:25.340'select * from ceshidrop table ceshidt readtype
2008-06-10 16:04:14.467 新
2008-06-09 16:00:25.340 旧触发器
以上方法都没有达到我要的效果。
<UpdateParameters>
<asp:ControlParameter ControlID="dttm" Name="date" PropertyName="Value" Type="dateTime" />
</UpdateParameters></asp:AccessDataSource>
<asp:HiddenField ID="dttm" runat="server" Value="" />
C# code:protected void Page_Load(object sender, EventArgs e)
{
dttm.Value = DateTime.Today.ToShortDateString();
AccessDataSource1.Update();
AccessDataSource1.UpdateCommand = "UPDATE [news] SET [readtype] = 'new' WHERE [date] = ?";
AccessDataSource1.Update(); }