SQL Server добавляет косую черту к дате на лету - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь выяснить, как добавить какую-то маску к моим данным. В настоящее время у меня есть запрос как это:

SELECT [EmployeeTC_No] AS "Employee TC#"
      ,[pye_nlast] AS "Name Last"
      ,[pye_nfirst] AS "Name First"
      ,[Dept] AS "Department"
      ,[pye_status] AS "Active"
      ,[HireDate] AS "Hire Date"
      ,[SeparationDate] AS "Separation Date"
  FROM [testing].[dbo].[testing]

Данные в столбце hiredate и splitdate отображаются как 09282015, но мне нужны даты, чтобы показать косую черту ("/"), например, 28.09.2015, есть ли способ добавить какую-то маску на лету для них?

Ответы [ 2 ]

3 голосов
/ 25 июня 2019

Что вам действительно нужно сделать, это исправить тип данных вашей колонки. varchar не подходит для всех типов данных и не должен использоваться для хранения дат. Как я уже сказал, 09282015 это не"после" 06242019, но, согласно вашим данным, это так.

Вы можете исправить свои данные, выполнив следующие действия:

USE testing;
GO

--Change the data to the ISO yyyyMMdd format
UPDATE dbo.testing
SET HireDate = CONVERT(varchar(8),CONVERT(date,STUFF(STUFF(SeparationDate,5,0,'/'),3,0,'/'),101),112),
    SeparationDate = CONVERT(varchar(8),CONVERT(date,STUFF(STUFF(SeparationDate,5,0,'/'),3,0,'/'),101),112);
GO

--Change the data types
ALTER TABLE dbo.testing ALTER COLUMN HireDate date;
ALTER TABLE dbo.testing ALTER COLUMN SeparationDate date;
GO

--And now you can select, and change the datatype to a format, with ease
SELECT [EmployeeTC_No] AS [Employee TC#],
       [pye_nlast] AS [Name Last],
       [pye_nfirst] AS [Name First],
       [Dept] AS [Department],
       [pye_status] AS [Active],
       CONVERT(varchar(10),[HireDate],101) AS [Hire Date],
       CONVERT(varchar(10),[SeparationDate],101) AS [Separation Date]
  FROM [testing].[dbo].[testing];
1 голос
/ 24 июня 2019

Это не идеально, так как вы, похоже, не храните даты в качестве типа даты. Если они varchars, и вы хотите просто добавить косую черту для презентации, вы можете вставить их в случае необходимости. Предполагается, что у вас всегда есть дата 8char:

SELECT STUFF(STUFF(your_col, 3, 0, '/'), 6, 0, '/')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...