从表中选择当月第一天的所有数据

问题描述 投票:0回答:3

我正在使用 Data Studio 查询关系数据库中的大表。我试图获取所有数据,其中数据类型为 DATE 的特定列是该月的第一天。列中的日期范围约为 1990 年至 2023 年,格式为 YYYY-MM-DD。

我对 SQL 不是很精通,我找到的所有类似的答案对我来说似乎没有任何意义。

如有任何帮助,我们将不胜感激。

SELECT * FROM data_table
WHERE date_column ... is the first of the month;
sql ibm-data-studio
3个回答
0
投票

我假设是 DB2,因为您已经标记了 IBM。

对于 DB2,您可以使用这个:

月份教程


0
投票

使用 ORACLE SQL,我会使用

to_char(...)
函数:

SELECT * FROM data_table
WHERE to_char(date_column, 'DD') = 1

0
投票

用于查找每月第一天的 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
© www.soinside.com 2019 - 2024. All rights reserved.