我正在使用 Data Studio 查询关系数据库中的大表。我试图获取所有数据,其中数据类型为 DATE 的特定列是该月的第一天。列中的日期范围约为 1990 年至 2023 年,格式为 YYYY-MM-DD。
我对 SQL 不是很精通,我找到的所有类似的答案对我来说似乎没有任何意义。
如有任何帮助,我们将不胜感激。
SELECT * FROM data_table
WHERE date_column ... is the first of the month;
使用 ORACLE SQL,我会使用
to_char(...)
函数:
SELECT * FROM data_table
WHERE to_char(date_column, 'DD') = 1
用于查找每月第一天的 SQL Server 语法。我使用 CTE 用日期填充表,然后实际查询仅提取每月第一天的日期。
WITH fakeDates AS
(
SELECT CAST('1/1/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/2/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/3/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/4/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/5/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/6/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/7/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/8/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/9/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/10/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/11/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/12/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/13/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/14/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/15/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/16/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/17/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('2/01/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('2/03/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/13/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('3/01/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('3/15/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('1/16/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('4/01/1998' AS DATETIME) AS DateField UNION ALL
SELECT CAST('4/02/1998' AS DATETIME) AS DateField
)
SELECT fd.DateField
FROM fakeDates fd
WHERE DAY(fd.DateField) = 1