简体   繁体   English

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

[英]Selecting all data from a table where it is the first of the month

I am using Data Studio to query a large table in a relational database.我正在使用 Data Studio 查询关系数据库中的大表。 I am attempting to get all of the data where a certain column with the data type of DATE is the first of the month.我正在尝试获取数据类型为 DATE 的某个列是本月第一天的所有数据。 The dates in the columns range from about 1990 to 2023 and are in the YYYY-MM-DD format.列中的日期范围从大约 1990 年到 2023 年,格式为 YYYY-MM-DD。

I am not very proficient with SQL and all answers I've found for anything similar don't seem to make any sense to me.我对 SQL 不是很精通,我找到的所有类似问题的答案对我来说似乎没有任何意义。

Any help would be appreciated.任何帮助,将不胜感激。

SELECT * FROM data_table
WHERE date_column ... is the first of the month;

Using ORACLE SQL, I would employ the to_char(...) function:使用 ORACLE SQL,我会使用to_char(...) function:

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

I'm assuming DB2 because you've tagged IBM Data Studio:我假设 DB2 因为您已标记 IBM Data Studio:

Can you use DAYOFMONTH() like this?:你可以像这样使用DAYOFMONTH()吗?:

SELECT * FROM data_table
WHERE DAYOFMONTH(date_column) = 1;

SQL Server Syntax to locate the First of the Month. SQL 服务器语法用于定位月初。 I use a CTE to populate a table with dates and then the actual query to pull only the dates where it is the First of the Month.我使用 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM