Как DATETIME регулярное выражение и разделить - PullRequest
0 голосов
/ 19 февраля 2020
USER  TIME
 A     2020-02-18 12:00:13.037
 B     2020-02-19 12:00:13.037
 B     2020-02-11 11:00:13.037
 B     2020-02-11 14:00:13.037
 B     2020-02-11 08:00:13.037
 C     2020-02-09 12:00:13.037

Я хочу получить результат, подобный следующему:

USER  TIME
 B     02-11 
 B     02-11 
 B     02-11

Время запроса - 02-11 и время деления на месяц и данные

Как я могу это сделать? Мой запрос:

SELECT * FROM my_table WHERE USER = 'B' AND TIME REGEXP '02/11"

Ответы [ 3 ]

1 голос
/ 19 февраля 2020

Получите month и date от вашего date и используйте DATEPART:

DECLARE @DataSource TABLE
(
    [User] CHAR(1)
   ,[Time] DATETIME2
);

INSERT INTO @DataSource ([User], [Time])
VALUES ('A', '2020-02-18 12:00:13.037')
      ,('B', '2020-02-19 12:00:13.037')
      ,('B', '2020-02-11 11:00:13.037')
      ,('B', '2020-02-11 14:00:13.037')
      ,('B', '2020-02-11 08:00:13.037')
      ,('C', '2020-02-09 12:00:13.037');

SELECT *
FROM @DataSource
WHERE [User] = 'B'
    AND DATEPART(MONTH, [Time]) = 2
    AND DATEPART(DAY, [Time]) = 11
1 голос
/ 19 февраля 2020

Я считаю, что это должно работать, если я понимаю ваш вопрос

CREATE TABLE #DATE ([USER] VARCHAR(5),  [TIME] DATETIME2)
INSERT INTO #DATE VALUES
('A','2020-02-18 12:00:13.037'),('B','2020-02-19 12:00:13.037'),
('B','2020-02-11 11:00:13.037'),('B','2020-02-11 14:00:13.037'),
('B','2020-02-11 08:00:13.037'),('C','2020-02-09 12:00:13.037')

SELECT
    [USER],  
    [TIME],
    FORMAT([TIME],'MM-dd')
FROM #DATE
WHERE FORMAT([TIME],'MM-dd')='02-11'

DROP TABLE #DATE

Обратите внимание, что функция форматирования работает только для SQL Версия сервера 2012 и выше.

0 голосов
/ 19 февраля 2020

Следующий запрос даст вам результаты в формате, указанном в вопросе, если вы хотите вернуть записи на основе даты выполнения запроса

SELECT [USer], FORMAT ([Time], 'MM-dd') as [time]
from [Table1]
where FORMAT ([Time], 'MM-dd')=FORMAT (getdate(), 'MM-dd') and [user]="B"

Если вы хотите, чтобы результаты основывались на жестко заданной дате, следующий запрос будет работать

SELECT [USer], FORMAT ([Time], 'MM-dd') as [time]
from [Table1]
where FORMAT ([Time], 'MM-dd')='02-11' and [user]="B"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...