在做一个网吧收费系统,需要更新网吧收费数据:把周六到周日的收费改到平常的一半,每小时计算。如下图这样写提醒数据库类型转换失败,求教
SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) IN (0, 1)
楼主你确定update语句这么写?
不应该是
update record
set fee = fee/2
where begintime between 'saturday' and 'sunday'
DECLARE @t TABLE (
id INT IDENTITY(1,1) PRIMARY KEY,
Fee INT,
BeginTime DATETIME
)
INSERT INTO @t (Fee,BeginTime) VALUES(2,'2016-07-22')
INSERT INTO @t (Fee,BeginTime) VALUES(2,'2016-07-23')
INSERT INTO @t (Fee,BeginTime) VALUES(2,'2016-07-24')
SELECT *,DATEPART(dw,BeginTime) AS dw FROM @t
/*
id Fee BeginTime dw
1 2 2016-07-22 00:00:00.000 6
2 2 2016-07-23 00:00:00.000 7
3 2 2016-07-24 00:00:00.000 1
*/
UPDATE @t SET Fee=Fee/2 WHERE DATEPART(dw,BeginTime) IN (7,1)
SELECT * FROM @t
/*
id Fee BeginTime
1 2 2016-07-22 00:00:00.000
2 1 2016-07-23 00:00:00.000
3 1 2016-07-24 00:00:00.000
*/