标签: datetime

从时间数据类型获取分钟部分

使用时间数据类型(我使用的是 Microsoft SQL Server 2008),有没有办法只取出它的分钟部分?我试图将时间传递给 datepart 和 datediff 函数,但都拒绝工作。

示例:我想从 04:15 得到 15

sql-server-2008 sql-server datetime

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

如何检查给定日期时间的时区?

我正在使用的数据库/表将其所有日期值保存为日期时间(没有时区)。

如何找出该日期所在的时区?

例如,中欧夏令时 (+02) 从 2015 年 3 月 29 日开始,而之前的冬季时间 (+01) 从 2014 年 10 月 26 日开始。

假设我看到的日期是2014-11-06,是否有一个函数可以用来检查它属于哪个时区?

注意,我知道时区变化时会有一些边缘情况

如果需要的话,我对一些大的CASE WHEN语句感到满意,但当然更愿意使用一些系统函数。

sql-server t-sql datetime

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

如何在 MySQL 中找到下一个星期六

我有触发器和一个存储过程(所以 SP 在触发器运行时运行)。我需要一个函数来找到下一个星期六放入 SP。

所以让我们说,今天是星期三(2015-7-22)。如果我的触发器今天运行,其中的 SP 必须找到下一个星期六 (2015-7-25)。

另外,即使是星期六,但时间早于晚上 9.30,它也必须找到当天。晚上 9.30 之后,它必须在下周六返回。

我想把我的整个触发器和 sp 放在这里,但我不想在这里拥挤。我只需要想法,谢谢。

编辑:

感谢 oNaye,我编写了以下代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `newGuess`(
IN `muserID` INT, 
IN `numm1` INT, 
IN `numm2` INT, 
IN `numm3` INT, 
IN `numm4` INT, 
IN `numm5` INT, 
IN `numm6` INT)
    begin
set @today = (select weekday(curdate())+1); /*monday is the first day in here*/
if @today<6 or @today=7 then /*it is NOT saturday*/
    set @nextSaturday = (SELECT DATE_ADD(NOW(),INTERVAL IF(WEEKDAY(NOW())>=5,(6-WEEKDAY(NOW())),(5-WEEKDAY(NOW()))) DAY));
end if;
if @today = 6 then /* …
Run Code Online (Sandbox Code Playgroud)

mysql trigger stored-procedures datetime date

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

将 CHAR 转换为 DATETIME 以便我可以使用 DATEADD()

我有一个关于将DATEADD()函数用于标识为的列的问题CHAR (6)

time_stamp列包含类似131329as 的值hhmmss。每当我尝试创建一个新列来保存列的值time_stamp+ 5 分钟时,我都会收到错误消息。

消息 242,级别 16,状态 3,第 1 行
字符数据类型到日期时间数据类型的转换导致日期时间值超出范围。`

我想要做的是创建一个新列,它比time_stamp. 我现在正在处理一份显示“已完成订单”的报告,但我需要该报告将订单显示为“未完成”至少 5 分钟,然后才能在报告中显示为“已完成”。

sql-server t-sql type-conversion datetime

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

为什么 SQL Server 2008 R2 在使用批量插入时插入无效的日期时间?

我想 在 SQL Server 2008 R2 上使用T-SQL BULK INSERT插入带有可选日期时间值(每行)的行。

一张表可能如下所示:

CREATE TABLE [dbo].[tbl_bulk_insert_datetime_issue] (
    [id] [int] NOT NULL,
    [description] [varchar](20) NOT NULL,
    [datetime] [datetime] NULL,
CONSTRAINT [pk_bulk_insert_datetime_issue] PRIMARY KEY CLUSTERED (
    [id] ASC
))
Run Code Online (Sandbox Code Playgroud)

插入批次:

BULK
INSERT [dbo].[tbl_bulk_insert_datetime_issue]
FROM 'C:\temp\bulkinsertsample.csv'
WITH
(
    FIELDTERMINATOR=';'
)
Run Code Online (Sandbox Code Playgroud)

如果我要插入以下 CSV 内容:

1;row01;
2;row02;20130401
3;row03;
4;row04;20130515
Run Code Online (Sandbox Code Playgroud)

表的内容已按预期解析和插入:

id          description          datetime
----------- -------------------- -----------------------
1           row01                NULL
2           row02                2013-04-01 00:00:00.000
3           row03                NULL
4           row04                2013-05-15 00:00:00.000
Run Code Online (Sandbox Code Playgroud)


但是如果 CSV 文件包含可选日期时间的无效数据

1;row01;
2;row02;20130401
3;row03;not_a_datetime …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server-2008-r2 datetime bulk-insert

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

日期时间列与日期 + 时间列

我正在为一个保存大量日志的系统设计一个表。我们正在查看每秒大约 200 个条目。

我们使用的是 SQL-Server 2012 企业版。

我有一个关于将一Datetime列分成两列的问题,Date并且Time.

我在问题背后的想法。我会说一旦数据存储在数据库中,大多数搜索将基于每天,给我今天/1 月 10 日的所有结果。

现在我仍然需要存储时间。因此,如果我将其存储为datetime,则在执行此查询时,sql 将不得不加载整个datetime字段,然后只查看一半的数据。

因此,通过可能将日期存储在其自己的字段中,它可以只查看它需要的内容。

但另一方面,如果您确实在查询中指定了时间,则它现在必须检查两列的值。

因此,我希望 SQL Gurus 提供关于哪个选项对大型数据库的查询具有更好的性能的输入。

据我所知datetime,可以高度优化并且是比分解更好的解决方案。

sql-server t-sql sql-server-2012 datetime date

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

将单个传感器值与校正因子组合成一个整体值

对于学校项目,我们试图根据 5 个传感器(3x O3、1x 温度、1x 湿度)的组合来计算(校正)臭氧值。

我们在项目的其余部分使用 MySQL 和 PHP。

该表Measurements具有以下结构:

id (int(11))
time (datetime)
value (float)
measured_value (float)
sensor (tinytext)
unit (tinytext)
measurement_short_type (tinytext)
stream_id int(11)
Run Code Online (Sandbox Code Playgroud)

所以一个示例行看起来像这样:

ID    Time                 value  measured_value  sensor  unit   measurement_short_type  stream_id
----  -------------------  -----  --------------  ------  -----  ----------------------  ---------
3324  2016-05-21 11:00:34  0      193             O3r     KOhms  O3                      6511
Run Code Online (Sandbox Code Playgroud)

如您所见,我们有 2 列,value(float) 和measured_value(float)。

为了value根据单个传感器数据(存储在 中measured_value)计算正确的最终数据,我们需要对每个数据点应用与此类似的公式:

Corrected value[datetime] = ("6511".measured_value[datetime] * -0.106830613)
                          + ("6512".measured_value[datetime] * 0.065201457)
                          + …
Run Code Online (Sandbox Code Playgroud)

mysql-5.5 datetime

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

如何将时间四舍五入到任意时间间隔的上倍数?

例子:

  • 如果当前时间为 2018-05-17 22:45:30 且所需时间间隔为INTERVAL '5 minute',则所需输出为 2018-05-17 22:50:00。
  • 如果当前时间为 2018-05-17 22:45:30 且所需时间间隔为INTERVAL '10 minute',则所需输出为 2018-05-17 22:50:00。
  • 如果当前时间为 2018-05-17 22:45:30 并且所需的时间间隔为INTERVAL '1 hour',则所需的输出为 2018-05-17 23:00:00。
  • 如果当前时间是 2018-05-17 22:45:30 并且期望的间隔是INTERVAL '1 day',那么期望的输出是 2018-05-18 00:00:00。

postgresql datetime interval date-math

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

日期时间累进求和 PostgreSQL

我的第一个问题在这里,但我查看了许多其他地方并找不到我的问题的答案。

 id | track_seg_id |        time         
----+--------------+---------------------
  1 |            0 | 2020-05-23 07:45:32
  2 |            0 | 2020-05-23 07:46:04
  3 |            0 | 2020-05-23 07:46:53
  4 |            0 | 2020-05-23 07:46:58
  5 |            0 | 2020-05-23 07:47:03
  6 |            0 | 2020-05-23 07:47:08
  7 |            0 | 2020-05-23 07:47:11
  8 |            0 | 2020-05-23 07:47:16
  9 |            0 | 2020-05-23 07:47:20
 10 |            0 | 2020-05-23 07:47:23
Run Code Online (Sandbox Code Playgroud)

我想要做的是progressive sum从第一行到下一行获得几秒钟。

 id | track_seg_id |        time         |        prog         
----+--------------+---------------------+---------------------
  1 …
Run Code Online (Sandbox Code Playgroud)

postgresql aggregate datetime

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

计算区间表的集合差

我经常遇到以下问题。我有两张间隔表。它们受日期限制(没有时间部分)。每个表中的间隔不重叠。

开始时间 结束时间
2015-01-03 2015-03-02
2015-03-05 2015-04-01
开始时间 结束时间
2015-01-07 2015-02-27
2015-03-01 2015-03-13
2016-01-01 2016-01-02

我想找到两个表的集合差异,即代表第一个表中而不是第二个表中的时间的间隔。

上面的虚拟示例所需的输出:

开始时间 结束时间
2015-01-03 2015-01-06
2015-02-28 2015-02-28
2015-03-14 2015-04-01

即,如果第一个表的日期在下面用黄色标记,并且第二个表的范围用框包围,我将寻找未装箱的黄色日期的连续范围。

在此输入图像描述

我目前将两端都视为包含间隔,并使用 DateTime 作为时间戳。我当前的方法是通过三重自连接(恶心)获取第二个表的补集,然后通过连接将结果与第一个表相交。不好玩。

有更好的方法吗?

sql-server datetime interval sql-server-2019

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