小编Kaz*_*Nur的帖子

夏令时导致数据库中的日期不正确

背景:

我对夏令时更改有疑问。输入到数据库中的任何记录(旁注:我无法访问输入此数据的脚本/代码以修复它)2021-03-282021-10-31以不正确的日期输入到数据库中。例如:

输入的记录2021-03-26最终在数据库中作为2021-03-26 00:00:00,这是正确的。

输入的记录2021-03-29最终会出现在数据库中,因为2021-03-28 23:00:00这是不正确的。

因此,当我尝试搜索在 on 中输入的记录时2021-03-26,查询工作正常,但是如果我尝试搜索在 on 中输入的2021-03-29记录,由于时间更改,它会返回错误日期的记录。


样本数据:

ColDate, ColName
2021-03-26 00:00:00, SomeName -- CORRECT DATE
2021-03-26 00:00:00, SomeName -- CORRECT DATE
2021-03-26 00:00:00, SomeName -- CORRECT DATE
2021-03-28 23:00:00, SomeName -- INCORRECT DATE
2021-03-28 23:00:00, SomeName -- INCORRECT DATE
2021-03-28 23:00:00, SomeName -- INCORRECT DATE
Run Code Online (Sandbox Code Playgroud)

工作示例:

DECLARE @StartDate datetime
DECLARE @EndDate datetime

SET @StartDate = '2021-03-26 00:00:00'
SET @EndDate …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server dst

6
推荐指数
1
解决办法
302
查看次数

用于计算“保留”库存项目的 SQL 查询

我们正在为名为 readoutprobes 和 readoutprobekits 的项目创建一个库存系统。下面的模式使用itemsitemkits两个词进行了简化。

在此处输入图片说明

一个物品包,是一个或多个物品的预定义集合,即一个套件。在套件中,特定类型的物品只能出现一次。一个套件,通常包含约 40 件物品。套件中物品的定义由itemkit_item表捕获。套件的库存记录在itemkit_containers表中。

itemkit_container跟踪物理项目容器。相反,它假设使用一组物理项目正确地“组装”了一个物理项目包,但我们不知道是哪些。填充时,itemkit_containers 记录中的“填充”字段设置为 true。

物品的库存由item_containers表跟踪。它的存在由容器体积监控。当体积为 0 时,容器被认为是空的。

从item_container表中获取特定物品的体积> 0的物理物品容器的数量,对于套件也是如此

我们希望获得每个项目的“保留计数”编号,以反映套件库存。

例如,假设我们有一个名为 A 的项目,其计数为 42。如果我们正在创建一个包含名为 A 的项目和相应的 itemkit_container 的 itemkit,我们希望“reserved”的计数为 1,对于 item一种。

项目的“主查询”如下所示:

SELECT items.*,         
    ic.item_count
FROM items
LEFT JOIN (
    SELECT p.id, COUNT(*) item_count, ic.item_id
    FROM  items AS p, item_containers AS ic
    WHERE p.id = ic.item_id AND ic.volume > 0
    GROUP BY p.id
    ) AS ic   
    ON ic.item_id …
Run Code Online (Sandbox Code Playgroud)

mysql sql inventory dbexpress sqlfiddle

5
推荐指数
1
解决办法
281
查看次数

在 Postgresql 中将日期转换为 YYYY-MM-DDThh:mm:ss.sssZ 格式

我想将日期格式转换为YYYY-MM-DDThh:mm:ss.SSSXXXZ(ISO 8601)。

得到了2021-02-10T04:02:55.55SXXXZ,这是错误的。我需要它作为2021-02-10T04:02:55.55S000000Z.

select to_char(now(), 'YYYY-MM-DDThh:mm:ss.SSSXXXZ')
Run Code Online (Sandbox Code Playgroud)

sql postgresql iso8601 to-char

4
推荐指数
1
解决办法
6686
查看次数

结合 2 个复杂的查询

首先,我无法提供 SQL Fiddle,因为要重新创建数据真的很复杂。我将尝试尽可能清楚地呈现查询、输出和问题。

我有一个看起来像这样的查询:

with cte(MainArt,secondaryArt, Quantity) as(
SELECT t_mitm, t_sitm, t_qana
            FROM ttibom010201 
        WHERE TRIM(t_mitm) = 'ACL-4812070395-4'
union all
select 
ttibom010201.t_mitm, ttibom010201.t_sitm, ttibom010201.t_qana
from ttibom010201 inner join cte on cte.secondaryArt=ttibom010201.t_mitm
        )
select    cte.* ,dsc.t_cuni, dsc.t_dsca from cte
left join ttcibd001201 dsc on dsc.t_item = cte.secondaryArt 
where TRIM(secondaryArt)  like N'30%'
Run Code Online (Sandbox Code Playgroud)

这个确切的查询返回了这 4 行:

在此处输入图片说明

从另一个表中,我使用这个secondArt值来获取一些信息:

select top 1 t_orno, t_item,t_pric from ttdpur401201 where t_item like '%30102024%' order by  t_ddte desc
Run Code Online (Sandbox Code Playgroud)

结果是:

在此处输入图片说明

正如您所看到的 t_item 和 secondaryArt 是相同的(第一个查询的第 3 行和第 4 …

sql sql-server union select

4
推荐指数
1
解决办法
283
查看次数

如何根据 PostgreSQL 中同一行的两个不同列更新具有唯一序列号的列?

我有一个以下格式的记录列表(示例),是通过连接数据库中的多个表和条件条件生成的:

第 1 列 第2栏 第3栏
100 200 1
100 201 1
100 第202章 1
100 203 1
101 204 1
101 205 1
102 206 1
102 207 1

我想要的是根据 Col1 和 Col2 中的值更新上例中 Col3 中的值。

这个想法是首先循环 Col1,然后再循环 Col2,并从 1 开始更新 Col3 中的值,每次迭代 Col2 记录时增加 1。对于 Col1 的下一次迭代,应再次重复此操作。

上述方法的预期输出示例为:

第 1 列 第2栏 第3栏
100 200 1
100 201 2
100 第202章 3
100 203 4
101 204 1
101 205 2
102 206 1
102 207 …

sql postgresql stored-procedures row-number greatest-n-per-group

4
推荐指数
1
解决办法
1346
查看次数

横向连接查询返回带括号的值。如何去除它?

我正在使用 Postgres 作为聊天应用程序。我有两张表,一张包含对话 ID 和参与者,另一张表包含消息。

我正在运行以下查询来获取用户的所有对话,并使用横向联接在结果中包含最后一条消息:

select c.id, c.title, c.members, max(m.created_at) delivered_at, last_message
from conversations c
join messages m on c.id = m.conversation_id
left join lateral (select message from messages m where c.id = m.conversation_id order by created_at desc limit 1) last_message on true 
where array[4] <@ c.members 
group by c.id, last_message
order by delivered_at desc
Run Code Online (Sandbox Code Playgroud)

这有效,但消息返回为(message)而不是message

我真的不知道为什么。有什么我可以做的,这样我就不必替换括号作为额外的步骤?

sql postgresql lateral-join

3
推荐指数
1
解决办法
1421
查看次数

Oracle Pivot:从行到列

您好,是否可以将行值转换为列。我正在使用 ORACLE SQL,我想将月份转换为具有 kpi 值的列,如下所示。我尝试了分区和合并语句,但似乎没有任何效果。我真的很感激一些帮助。先感谢您。

输入数据:

部门 关键绩效指标 价值
A 2000年 1 销售量 5000
A 2000年 1 每个客户的收入 120
A 2000年 2 销售量 6000
A 2000年 2 每个客户的收入 140

期望的输出:

部门 关键绩效指标 1 2
A 2000年 销售量 5000 6000
A 2000年 每个客户的收入 120 140

sql oracle pivot procedure oracle11g

3
推荐指数
1
解决办法
68
查看次数

如何在select语句中使用不同条件进行多个COUNT

我在下面做了三个选择,每个选择都返回一个值。如何仅选择并返回三个值,每个值都有其条件?所有信息都在一张表中。

SELECT COUNT (GRA_HRFIM) as "Conferidos antes 17h" FROM GRADE WHERE GRA_HRFIM < '17:00:00' AND GRA_DATADIGITA = '04/28/2021'

SELECT COUNT (GRA_HORADIGITA) as "Importados antes 17h" FROM GRADE WHERE GRA_HORADIGITA < '17:00:00' AND GRA_DATADIGITA = '04/28/2021'

SELECT COUNT (GRA_HRFIM) as "Total pedidos" FROM GRADE WHERE GRA_DATADIGITA = '04/28/2021'
Run Code Online (Sandbox Code Playgroud)

sql firebird

3
推荐指数
1
解决办法
79
查看次数

如何在 SQL Server 中编写区分大小写的 WHERE CLAUSE

好吧,这个让我难住了。我希望这不是愚蠢/显而易见的事情......

我正在尝试修复客户端数据库中的地址。我有一个函数,它接受一个字符串并返回一个字符串,其中每个单词的第一个字母都大写。
我试图只传递全部大写或全部小写的地址,但它返回的是整个数据集。前 3 列都是正确的,所以我不明白为什么 WHERE 不起作用。

这是我的代码。

    SELECT
        [ConvertFirstLettertoCapital]([Address]) AS [Standard],
        UPPER([Address]) AS [Upper],
        LOWER([Address]) AS [Lower],
        [Name],
        [Address],
        [Address 2],
        [City],
        [State]
    FROM [Address_List]
    WHERE
        [Address] = UPPER([Address]) OR
        [Address] = LOWER([Address])
Run Code Online (Sandbox Code Playgroud)
  • MS SQL v15.0.1083.2
  • SSMS v15.0.18330

sql sql-server case-sensitive where-clause sql-server-2019

2
推荐指数
1
解决办法
458
查看次数

计算两个日期之间的平均天数

我有下表:

团队 电话号码 订单号 通话日期 订购日期
TM1 2222222222 26699443 2021-01-28 2021-02-05
TM1 1111111111 26699450 2021-01-22 2021-01-22
TM2 5555555555 26699466 2021-02-22 2021-02-23
TM2 5555555555 26699467 2021-01-22 2021-02-01
TM3 7777777777 26699488 2020-12-10 2021-01-03

我想计算每个团队每个月从电话到订单的平均时间。这是我的查询:

SELECT 
    Team,
    MONTH(CallDate),
    AVG(DATEDIFF(day,CallDate,OrderDate))
FROM MyTab AS C 
GROUP BY Team, MONTH(CallDate)
Run Code Online (Sandbox Code Playgroud)

我想计算 CallDate 和 OrderDate 之间的差异,然后为每个团队应用每个月的平均值。

sql t-sql sql-server average

2
推荐指数
1
解决办法
88
查看次数