2 raelovejava Raelovejava 于 2016.05.12 16:21 提问

SQL 语句中周六到周日的表达

在做一个网吧收费系统,需要更新网吧收费数据:把周六到周日的收费改到平常的一半,每小时计算。如下图这样写提醒数据库类型转换失败,求教图片说明

3个回答

oyljerry
oyljerry   Ds   Rxr 2016.05.12 16:46
 SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7)  IN (0, 1)
liang061145
liang061145   2016.05.23 15:02

楼主你确定update语句这么写?
不应该是
update record
set fee = fee/2
where begintime between 'saturday' and 'sunday'

Raelovejava
Raelovejava 回复liang061145: 我不知道 … 所以才问嘛![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/1.gif)
一年多之前 回复
yenange
yenange   2016.07.23 21:48
 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
*/

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!