标签: datetime

存储数百万行非标准化数据或一些 SQL 魔法?

我的 DBA 经验只是简单的存储 + CMS 样式数据的检索 - 所以这可能是一个愚蠢的问题,我不知道!

我有一个问题,我需要查找或计算特定组大小和特定时间段内特定天数的假期价格。例如:

1 月任何时候 2 人 4 晚的酒店房间多少钱?

例如,我有 5000 家酒店的定价和可用性数据,如下所示:

Hotel ID | Date | Spaces | Price PP
-----------------------------------
     123 | Jan1 | 5      | 100
     123 | Jan2 | 7      | 100
     123 | Jan3 | 5      | 100
     123 | Jan4 | 3      | 100
     123 | Jan5 | 5      | 100
     123 | Jan6 | 7      | 110
     456 | Jan1 | 5      | 120
     456 | Jan2 …
Run Code Online (Sandbox Code Playgroud)

postgresql window-functions datetime denormalization

8
推荐指数
1
解决办法
769
查看次数

无法查询模式绑定视图的基础表

我使用备份还原技术和一组传输后操作(如DBCC UPDATEUSAGE或)将数据库从 SQL Server 2008R2 迁移到 SQL Server 2019(均为企业版)UPDATE STATISTICS XXX

在统计更新时,我收到以下错误:

Msg 402, Level 16, State 1, Procedure ZZZZ, Line 5 [Batch Start Line 0]
The data types datetime and time are incompatible in the add operator.
Msg 4413, Level 16, State 1, Line 1
Could not use view or function 'ZZZZ' because of binding errors.
Run Code Online (Sandbox Code Playgroud)

我知道该消息非常明确(在 2008R2 上语法正确的视图在 2019 年不再适用)。我不明白为什么定义的视图WITH SCHEMABINDING无效会阻止更新基础表上的统计信息。

此外,在使用WHERE子句查询基础表时,我收到相同的错误消息,除非我使用以下提示强制执行 FULLSCAN:

OPTION(TABLE HINT( $mytable, FORCESCAN ))
Run Code Online (Sandbox Code Playgroud)

我知道如果 DDL …

sql-server statistics materialized-view upgrade datetime

8
推荐指数
1
解决办法
311
查看次数

在 MySQL 中将列类型 DATETIME 更改为 TIMESTAMP 时会发生什么?

我想在超过一百万行的表中将列数据类型从 DATETIME 转换为 TIMESTAMP。

是否可以?慢吗?我会丢失旧信息还是 MySQL 可以自动转换?我可以做一个alter table还是我可以做一些不同的事情?

mysql timestamp datetime

7
推荐指数
1
解决办法
1万
查看次数

如何仅从 MySQL 日期/时间获取月份?

在我的 MySQL 服务器中,我有包含我创建内容日期的行。
例子:2013-03-17 02:53:47

现在,我正在使用:

$date = $fetch[thedaterownamegoeshere];

<?php echo $date; ?>
Run Code Online (Sandbox Code Playgroud)

但是2013-03-17 02:53:47,我不想获取日期 ( )的全部内容,而是只想获取月份——在本例中,我希望将数字“03”作为结果。我怎样才能做到这一点?

mysql date-format mysql-5.5 datetime

7
推荐指数
1
解决办法
9万
查看次数

Understanding MS SQL Server Date Types

Consider the following:

declare @dt datetime, @dt2 datetime2, @d date
set @dt  = '2013-01-01'
set @dt2 = '2013-01-01'
set @d   = '2013-01-01'

select convert(varbinary, @dt) as dt,
       convert(varbinary, @dt2) as dt2,
       convert(varbinary, @d) as d
Run Code Online (Sandbox Code Playgroud)

Output:

dt                    dt2                     d
------------------    --------------------    --------
0x0000A13900000000    0x07000000000094360B    0x94360B
Run Code Online (Sandbox Code Playgroud)

Now, I already understand from the documentation that datetime has a smaller range, and starts from 1753-01-01, while datetime2 and date use 0001-01-01 as their start date.

What I don't understand though, is that datetime …

sql-server datatypes sql-clr datetime user-defined-type

7
推荐指数
1
解决办法
991
查看次数

在 SQL Server 中的 DATETIME 列上按 MONTH 对数据进行分组

我有一个表Employee,其中包含列 ID、加入日期和名称

加入日期是一DATETIME栏。

我想知道十月份有多少用户加入?

sql-server group-by datetime

7
推荐指数
1
解决办法
12万
查看次数

获取当月的所有日期

我在 MySQL 中有一个查询,它通过获取当月内的所有记录来很好地为我服务;

SELECT date_field,val FROM MY_TABLE WHERE date_field>=(CURDATE()-INTERVAL 1 MONTH);
Run Code Online (Sandbox Code Playgroud)

上面的查询运行良好。所以如果这个月我们只有两个记录和 28 天,它只会带来两个记录。

date_field | val
========================
2015-02-08 | 567
2015-02-09 | 345
Run Code Online (Sandbox Code Playgroud)

但我希望返回的记录数与当月的天数完全相同。如果当月有 28 天并且只有两个记录,它应该带来;

date_field | val
========================
2015-02-01 | 0
2015-02-02 | 0
2015-02-03 | 0
2015-02-04 | 0
2015-02-05 | 0
2015-02-06 | 0
2015-02-07 | 0
2015-02-08 | 567
2015-02-09 | 345
2015-02-10 | 0
2015-02-11 | 0
2015-02-12 | 0
2015-02-13 | 0
2015-02-14 | 0
2015-02-15 | 0
2015-02-16 | 0
2015-02-17 …
Run Code Online (Sandbox Code Playgroud)

mysql datetime date

7
推荐指数
2
解决办法
7万
查看次数

如何编码已知日期但未知年份?

我正在使用 Postgres 数据库,并且有一个带有日期时间字段的表。对于许多记录,我们知道年份但不知道日期。有时我们知道日期但不知道年份。其他时候我们知道时间但不知道日期。

使用日期时间数据类型时如何存储部分日期信息?

postgresql best-practices datetime date

7
推荐指数
1
解决办法
294
查看次数

将 csv 文件复制到 PostgreSQL 表时解析 DATE

我有一长串.csv文件,我想将其导入本地数据库。DATE我相信我的查询是正确的,但解析和列存在一些问题TIMESTAMP。PostgreSQL 读取这些列时需要 ISO 格式“yyyy/mm/dd”,但我的数据采用另一种格式:“dd/mm/yyyy”。

\n

我在网上和其他 Stack Overflow 答案上读到,可以有所SET不同datestyle,但不建议这样做。

\n

有没有办法指定要导入的列的格式?另外,我不需要从 csv 文件导入所有列:我可以省略一些列吗?

\n

细节

\n

首先,我编写了创建表的代码(抱歉,如果列名称是意大利语,但这并不重要):

\n
CREATE TABLE IF NOT EXISTS bikes (\n    bici INT,\n    tipo_bici VARCHAR(20),\n    cliente_anonimizzato INT,\n    data_riferimento_prelievo DATE,\n    data_prelievo TIMESTAMP,\n    numero_stazione_prelievo INT,\n    nome_stazione_prelievo TEXT,\n    slot_prelievo SMALLINT,\n    data_riferimento_restituzione DATE,\n    data_restituzione TIMESTAMP,\n    numero_stazione_restituzione INT,\n    nome_stazione_restituzione TEXT,\n    slot_restituzione SMALLINT,\n    durata VARCHAR(10),\n    distanza_totale REAL,\n    co2_evitata REAL,\n    calorie_consumate REAL,\n    penalit\xc3\xa0 CHAR(2)\n);\n
Run Code Online (Sandbox Code Playgroud)\n

然后我添加查询以将数据复制到表中:

\n
COPY bikes(\n    bici,\n    tipo_bici,\n    cliente_anonimizzato,\n    data_riferimento_prelievo,\n …
Run Code Online (Sandbox Code Playgroud)

postgresql import datetime date csv

7
推荐指数
1
解决办法
1万
查看次数

为什么 GetDate AND GETDATE() AT TIME ZONE 'GMT Standard Time' 返回错误的时间?

请看下面的代码:

DECLARE @UKDateTime as DateTime
SELECT @UKDateTime = GETDATE() AT TIME ZONE 'GMT Standard Time' 
print @UKDateTime 
PRINT GETDATE()
Run Code Online (Sandbox Code Playgroud)

这将返回:

Oct  4 2021  4:03PM
Oct  4 2021  4:03PM
Run Code Online (Sandbox Code Playgroud)

目前英国时间为:下午 5:03(由我的电脑时钟确认)。它似乎正在返回 UTC 日期。问题是什么?

我将 SQL Server 设置为 Docker 容器。它是 SQL Server v18.4。

sql-server timezone datetime

7
推荐指数
1
解决办法
8343
查看次数