我想创建一个表格,它会显示当月每月的每周工作日数,如下表所示.
我知道我需要使用with语句但尚未设法破解它.
我正在使用MS SQL Server 2008 r2,我也是SQL的Junior,所以任何帮助将不胜感激
输出预期:
Month Mon Tue Wed Thu Fri Sat Sun Sum
-------------------------------------------
January 4 5 5 5 4 4 4 31
February 4 4 4 4 4 4 4 28
March 4 4 4 4 5 5 5 31
April 5 5 4 4 4 4 4 30
May 4 4 5 5 5 4 4 31
June 4 4 4 4 4 5 5 30
July 5 5 5 4 4 4 4 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 SQL 查询来选择上个月的所有记录,从很多地方来看,这正是我应该需要的,并且应该可以工作:
SELECT *
FROM orders
WHERE DATEPART(yy,DateOrdered) = DATEPART(yy,DATEADD(m,-1,GETDATE()))
AND DATEPART(m,DateOrdered) = DATEPART(m,DATEADD(m,-1,GETDATE()))
Run Code Online (Sandbox Code Playgroud)
但是我不断收到错误消息:
#1305 - FUNCTION retail.DATEPART does not exist
Run Code Online (Sandbox Code Playgroud)
我正在使用的查询是从这里的其他答案逐字逐句,但我收到此错误。
谢谢你的帮助-汤姆
我想创建一个像这样的列:
create table dbo.t1
(
[Notification_Month] datepart(mm, [date]) null,
)
Run Code Online (Sandbox Code Playgroud)
我想将月份存储为日期属性而不存储日期的其他部分.这是我所知道的一个奇怪的问题,但这个表正在被WPF应用程序使用,因此如果SQL Server允许这样做会更容易限制日期条目,但如果不是,我可能会找到一个使用c#的长而复杂的解决方案.
我有一些其他的解决方法,如果这是不可能的,但在我说它不是之前想过,总是最好用堆栈检查.
我可以轻松获得本月和上月的总销售额。
SELECT ‘This Mount’, SUM(Price) FROM Sales
WHERE EXTRACT(MONTH FROM OrderDate) = EXTRACT(MONTH FROM CURRENT_DATE)
AND EXTRACT(YEAR FROM OrderDate) = EXTRACT(YEAR FROM CURRENT_DATE)
Union All
SELECT ‘Previous Month’, SUM(Price) FROM Sales
WHERE EXTRACT(MONTH FROM OrderDate) = EXTRACT(MONTH FROM CURRENT_DATE)
AND EXTRACT(YEAR FROM OrderDate) = EXTRACT(YEAR FROM CURRENT_DATE)
Run Code Online (Sandbox Code Playgroud)
我想获得本季度和上一季度的总销售额。
使用 MS-SQL 从日期中获取季度非常容易,如下所示:
SELECT DATEPART(QUARTER, @date)
Run Code Online (Sandbox Code Playgroud)
我怎样才能用 Firebird 做到这一点?
当我DATE_PART
在此查询的函数中减去两个日期时遇到问题。
SELECT
TO_CHAR(date_trunc('month',sql_activity_days.created_month),'YYYY-MM') AS "sql_activity_days.created_month",
coalesce(SUM(
CASE
WHEN(date_part('day', (sql_activity_days.sale_date + 1) - sql_activity_days.start_date) < 122)
THEN sql_activity_days.cad_net_invoiced
ELSE NULL
END
),0) AS "sql_activity_days.activity_over_122_day_after_signup"
FROM
camel.f_subscription_touch AS subscription_touch
LEFT JOIN sql_activity_days ON subscription_touch.id = sql_activity_days.customer_id
group by date_trunc('month',sql_activity_days.created_month)
order by 1 desc limit
500
Run Code Online (Sandbox Code Playgroud)
PostgreSQL 数据库在运行此查询时遇到错误。
错误:函数 date_part(unknown, integer) 不存在 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。位置:1340
我正在尝试选择在当月开始和当天之间添加到数据库的记录 - 我或多或少知道如何从当天和特定时间段内获取记录 - 但我该怎么做得到它所以它从当前日历月的开始?
我试图在SQL Server Reports Builder中创建一个计算字段,其输出是周数(例如1,12,32,45等...)并使用以下表达式:
=DatePart("ww",Today())
我得到了"99"的结果.我究竟做错了什么?
我正在创建一个基于当前周进行大量过滤的SQL Server存储过程.我传递的是一个日期并使用Datepart()过滤掉一周,而不是传递一个开始和结束日期.
Where DATEPART(WEEK, cd.TurninDate) = DATEPART(WEEK, @StartDate)
and DATEPART(YEAR, cd.TurninDate) = DATEPART(YEAR, @StartDate)
Run Code Online (Sandbox Code Playgroud)
尝试顶级主动,我可以看到经理要求每月或每季度以及每周运行.如果我能帮助它,我宁愿没有为每个版本存储过程.我想传递频率和日期,但它似乎不起作用.
我试过了:
Where DATEPART(@Freq, cd.TurninDate) = DATEPART(@Freq, @StartDate)
and DATEPART(YEAR, cd.TurninDate) = DATEPART(YEAR, @StartDate)
Run Code Online (Sandbox Code Playgroud)
但我得到@Freq错误未被识别为间隔.
有谁知道我能解决这个问题的方法吗?
代码返回:
set datefirst 1
select datepart(wk,'2016-01-01') - 1
Run Code Online (Sandbox Code Playgroud)
但
set datefirst 1
select datepart(wk,'2015-12-31')
Run Code Online (Sandbox Code Playgroud)
return..53:/
但事实上 - 这是同一周.本周有更多的日子属于2015年,所以对于这个特定周的任何日期,它应该是"53"或"1"(相同的值).如果没有建立专门的程序来分析日期和调整返回值,是否可以实现这一目标?
我使用SQL Server 2005
使用TSQL,如何返回格式类似于"2012年2月7日"的日期?
这将返回当天:
SELECT DATEPART(d, getdate())
Run Code Online (Sandbox Code Playgroud)
这将返回年份:
SELECT DATEPART(yyyy, getdate())
Run Code Online (Sandbox Code Playgroud)
如何返回月份名称?
谢谢,
我有以下选择:
SELECT * FROM Table
WHERE Column= datepart(month,'2013-05-07 10:18:00')
AND Column= datepart(year,'2013-05-07 10:18:00')
Run Code Online (Sandbox Code Playgroud)
我想让它向我展示月份= 05和年份= 2013年的情况.实际上它没有显示任何东西(但有结果显示).谢谢.
DECLARE @Date DATE = '2/28/2014'
Run Code Online (Sandbox Code Playgroud)
我需要测试上面日期的DAY是否是该月的最后一天,它应该适用于一年中的所有月份.
如果是真的,那么我需要返回一个true,如果没有,那么就是false.
例如
SET @Date = '2/27/2014'
Run Code Online (Sandbox Code Playgroud)
这应该返回FALSE.
SET @Date = '12/31/2014'
Run Code Online (Sandbox Code Playgroud)
这应该返回TRUE.
我知道你可以根据月份操纵这个,但我只是想知道是否有一个简单的方法来做到这一点.
我在这里使用以下查询来获取我的数据并显示每周的值,但是,当有新的一年并且结果将显示周50, 51, 52 of 2016
和周时1, 2, 3 of 2017
,它将显示order by
周数,1,2,3,50,51,52
这意味着2017年结果出现在2016年之前,我该如何改变?
SELECT
DATEPART(wk, date) AS number,
SUM((kg * rep * sett)) AS weight,
SUM(kg / max * rep * sett) AS avg,
SUM((rep * sett)) AS reps,
MAX(kg / max) AS peak
FROM
Test
WHERE
date BETWEEN @0 AND @1 AND exercise < 4
GROUP BY DATEPART(wk, date)
Run Code Online (Sandbox Code Playgroud) datepart ×13
sql ×7
sql-server ×6
t-sql ×4
date ×2
week-number ×2
c# ×1
casting ×1
create-table ×1
dateadd ×1
firebird ×1
function ×1
looker ×1
mysql ×1
pivot ×1
postgresql ×1
select ×1