选择工作日MS SQL?
问题描述:
我有工作时间的应用程序...
我需要的是星期六星期日才能使用我的代码
没有
I have app for workers work time...
I need if is Saturday od Sunday to work with my code
Without
CASE WHEN WEEKDAY(a.vrijemeodjave) in (1,7) then 0 else
代码工作罚款
声明是Microsoft SQL 2016
我有什么试过:
CODE WORKING FINE
Statement is Microsoft SQL 2016
What I have tried:
SELECT a.id, a.redni_broj , a.radnik, isnull(convert(varchar(20), a.vrijemeodjave, 113), '') as vrijemeodjave, convert(varchar(20), b.vrijemeprijave, 113) as vrijemeprijave,
CASE WHEN WEEKDAY(b.vrijemeprijave) in (1,7) then 0 else (CASE WHEN (DATEDIFF(SECOND, b.vrijemeprijave, a.vrijemeodjave) / 3600) > 8 THEN 8 ELSE(DATEDIFF(SECOND, b.vrijemeprijave, a.vrijemeodjave) / 3600) END) end AS radni_sati,
CASE WHEN WEEKDAY(a.vrijemeodjave) in (1,7) then 0 else (CASE WHEN(DATEDIFF(SECOND, b.vrijemeprijave, a.vrijemeodjave) / 3600) > 8 THEN(DATEDIFF(SECOND, b.vrijemeprijave, a.vrijemeodjave) / 3600) - 8 ELSE NULL END) end AS prekovremeni
FROM(SELECT id, redni_broj, radnik, vrijemeodjave, ROW_Number() OVER(Partition By id ORDER BY vrijemeprijave) as RowNum
FROM dbo.prijava_radnika) a INNER JOIN(SELECT id, redni_broj, radnik, vrijemeprijave, (ROW_Number() OVER(Partition By id ORDER BY vrijemeprijave) - 1) as RowNumMinusOne FROM dbo.prijava_radnika) b ON a.id = b.id where 1 = 1
答
不确定我是否正确理解了这个问题但您可以使用DATEPART来提取工作日编号。
例如
Not sure if I understand the question correctly but you can use DATEPART to exctract the weekday number.
For example
SELECT DATEPART(weekday, GETDATE())
除了回答1,也许这会让事情变得更清楚:
In addition to answer 1, maybe this will make things clearer:
SELECT
DATENAME(weekday, a.vrijemeodjave),
DATEPART(weekday, a.vrijemeodjave)
FROM dbo.prijava_radnika
另见SQL小提琴: SQL Fiddle [ ^ ]