数据库日常操作

一.

SQL知识大全(三):SQL中的字符串处理和条件查询 (zhihu.com)

SELECT

    CONVERT(varchar, [CreateTime] ,23) AS [Date],

    SUM(1) AS [Count],

    SUM(IIF([ReportStatusId] = 3, 1, 0)) AS [FailCount],

    1.0 * SUM(IIF([ReportStatusId] = 3, 1, 0)) / SUM(1) AS [FailRate]

FROM Table

WHERE [TypeId] = 9

GROUP BY CONVERT(varchar, [CreateTime] ,23)

order by [FailCount]

Desc

解析为:CONVERT转换时间

Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16

(89条消息) CONVERT (VARCHAR,getdate(),23) ,后面的23是什么意思?_蒿豪郝灬号的博客-CSDN博客

CREATE PROCEDURE [A].[sp]
AS
BEGIN
	DECLARE @ErrorMessage	NVARCHAR(4000)
	DECLARE @TargetMonth INT
	DECLARE @MinMonth INT

	SELECT TOP 1 @TargetMonth = [MonthKey] 
	FROM [A].[aa] 
	ORDER BY [MonthKey] DESC

	IF @TargetMonth % 100 >= 8
		SET @MinMonth =  @TargetMonth-7
	ELSE
		SET @MinMonth =  @TargetMonth%100+12-7-100+@TargetMonth-@TargetMonth%100


	BEGIN TRY
		DELETE FROM [Opportunities].[FactOpportunityLifeCycleEventViewHalfYearWithSpendV2] WHERE [MonthKey] < @MinMonth 			

	END TRY
	BEGIN CATCH
		SET @ErrorMessage				= ISNULL(@ErrorMessage, ERROR_MESSAGE())
		DECLARE @ErrorSeverity	INT		= ERROR_SEVERITY();
		DECLARE @ErrorState		INT		= ERROR_STATE();
		RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState);
	END CATCH
END

当@TargetMonth是只有年月的时候,如202307

	BEGIN TRY
		DELETE FROM [A].[a] WHERE [MonthKey] < CAST(FORMAT(DATEADD(MONTH,-7,CONVERT(date, CONVERT(varchar(8), @TargetMonth)+'01', 112)),'yyyyMM') AS INT)
		

	END TRY

关于年月日时间的计算:使用Dateadd()函数

(89条消息) SQL Server 使用DATEADD()函数实现秒、分钟、小时、日、周、月份、季度、年份加减_旭东怪的博客-CSDN博客

三 CRUD语句

INSERT INTO 表名称 VALUES (1, 2,....)

INSERT INTO table_name (1, 2,...) VALUES (1, 2,....)

UPDATE table SET CustomerId = 123 WHERE AccountId = 1

四 KUSTO

你可能感兴趣的:(数据库,oracle)