Убедитесь, что в вашем package.json есть "types": "./QDatabase/Docs/QDb.d.ts"
. Больше информации о документах TypeScript по публикации пакетов
Если dt является Вашим столбцом даты и времени, то
Для 1:
SUBSTRING(CONVERT(varchar, dt, 13), 1, 2)
+ UPPER(SUBSTRING(CONVERT(varchar, dt, 13), 4, 3))
Для 2:
SUBSTRING(CONVERT(varchar, dt, 100), 13, 2)
+ SUBSTRING(CONVERT(varchar, dt, 100), 16, 3)
Не ответ на Ваш вопрос а именно, но не то, что что-то, что должно быть обработано уровнем представления Вашего приложения. При выполнении его способ, которым Вы описываете, создает дополнительную обработку на конце базы данных, а также добавление дополнительного сетевого трафика (предполагающий, что база данных существует на другой машине, чем приложение), для чего-то, что могло быть легко вычислено на стороне приложения, с более богатыми библиотеками обработки даты, а также быть большим количеством агностика языка, особенно в случае Вашего первого примера, который содержит сокращенное имя месяца. Так или иначе другие ответов дают Вам, должен указать на Вас в правильном направлении, если Вы все еще решаете пойти этим путем.
поле формата Даты и времени имеет следующий формат 'YYYY-MM-DD HH:MM:SS.S'
, Что оператор является ложью. Это, как Руководитель предприятия или SQL Server выбирают к шоу дата. Внутренне это - 8-байтовое двоичное значение, которое является, почему некоторые функции, отправленные Andrew, будут работать так хорошо.
Kibbee делает справедливое замечание также, и в идеальном мире я согласился бы с ним. Однако иногда Вы хотите обязать результаты запроса непосредственно отображать управление или виджеты и существует действительно не шанс сделать любое форматирование. И иногда уровень представления живет на веб-сервере, это еще более занято, чем база данных. С теми в памяти, это - не обязательно плохая вещь знать, как сделать это в SQL.
Используйте DATENAME и оберните логику в Функцию, не Сохраненный Proc
declare @myTime as DateTime
set @myTime = GETDATE()
select @myTime
select DATENAME(day, @myTime) + SUBSTRING(UPPER(DATENAME(month, @myTime)), 0,4)
Возвраты "14 октября"
Попытка не использовать любой Символ / основанные на строке операции если возможный при работе с датами. Они являются числовыми (плавание), и производительность пострадает от тех преобразований типа данных.
Роют эти удобные преобразования, которые я скомпилировал за эти годы...
/* Common date functions */
--//This contains common date functions for MSSQL server
/*Getting Parts of a DateTime*/
--//gets the date only, 20x faster than using Convert/Cast to varchar
--//this has been especially useful for JOINS
SELECT (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime))
--//gets the time only (date portion is '1900-01-01' and is considered the "0 time" of dates in MSSQL, even with the datatype min value of 01/01/1753.
SELECT (GETDATE() - (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime)))
/*Relative Dates*/
--//These are all functions that will calculate a date relative to the current date and time
/*Current Day*/
--//now
SELECT (GETDATE())
--//midnight of today
SELECT (DATEADD(ms,-4,(DATEADD(dd,DATEDIFF(dd,0,GETDATE()) + 1,0))))
--//Current Hour
SELECT DATEADD(hh,DATEPART(hh,GETDATE()),CAST(FLOOR(CAST(GETDATE() AS FLOAT)) as DateTime))
--//Current Half-Hour - if its 9:36, this will show 9:30
SELECT DATEADD(mi,((DATEDIFF(mi,(CAST(FLOOR(CAST(GETDATE() as FLOAT)) as DateTime)), GETDATE())) / 30) * 30,(CAST(FLOOR(CAST(GETDATE() as FLOAT)) as DateTime)))
/*Yearly*/
--//first datetime of the current year
SELECT (DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))
--//last datetime of the current year
SELECT (DATEADD(ms,-4,(DATEADD(yy,DATEDIFF(yy,0,GETDATE()) + 1,0))))
/*Monthly*/
--//first datetime of current month
SELECT (DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))
--//last datetime of the current month
SELECT (DATEADD(ms,-4,DATEADD(mm,1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))))
--//first datetime of the previous month
SELECT (DATEADD(mm,DATEDIFF(mm,0,GETDATE()) -1,0))
--//last datetime of the previous month
SELECT (DATEADD(ms, -4,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)))
/*Weekly*/
--//previous monday at 12AM
SELECT (DATEADD(wk,DATEDIFF(wk,0,GETDATE()) -1 ,0))
--//previous friday at 11:59:59 PM
SELECT (DATEADD(ms,-4,DATEADD(dd,5,DATEADD(wk,DATEDIFF(wk,0,GETDATE()) -1 ,0))))
/*Quarterly*/
--//first datetime of current quarter
SELECT (DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0))
--//last datetime of current quarter
SELECT (DATEADD(ms,-4,DATEADD(qq,DATEDIFF(qq,0,GETDATE()) + 1,0)))
Вы испытываете необходимость в DATEPART здесь. Можно конкатенировать, результаты DATEPART собирает.
Для получения сокращений месяца Вы могли бы быть в состоянии использовать DATENAME; если это не работает на Вас, можно использовать Оператор выбора на DATEPART.
DATEPART также работает на поле времени.
я могу думать о нескольких способах получить индикатор AM/PM, включая сравнение новых дат, созданных через DATEPART, или вычисление общих секунд протекло в день и сравнение, которое к известному/PM пороги.