Написание функции в SQL Server - PullRequest
0 голосов
/ 10 сентября 2011

Я написал функцию, которая конвертирует строку в дату и время.Итак, это то, что я сделал

   CREATE FUNCTION formatit(
      @fromtime VARCHAR(50) -- varchar
       )
    RETURNS DATETIME
    AS 
    BEGIN 
    DECLARE @from varchar(50)
    DECLARE @value
      IF (CHARINDEX('NOON',@fromtime,0)) = 0 THEN

       SET @from = CONVERT(DATETIME, @fromtime) 
     ELSE
       SET @from =CONVERT(DATETIME, '01/01/2000 12pm') 
    RETURN(@from)
    END

 SELECT dbo.formatit('04/12/2011 NOON ')

Итак, вы можете видеть, что если время состоит из слова полдень, я пытаюсь использовать дату по умолчанию.Но я получаю сообщение об ошибке «Преобразование не удалось при преобразовании даты и времени из символьной строки».

Это работает нормально, когда я вхожу в любое время, например, в 16:00 и т. Д., Но не получается, когда я даю полдень.Можете ли вы, пожалуйста, дайте мне знать, как я могу справиться с этим?

Ответы [ 3 ]

1 голос
/ 10 сентября 2011

Я думаю, вам нужно добавить минуты после 12 и поставить пробел между временем и AM / PM. Смотрите ниже:

SET @from = CONVERT(DATETIME, '01/01/2000 12:00 PM')
1 голос
/ 10 сентября 2011

@ from объявлено как varchar, вы возвращаете дату и время

1 голос
/ 10 сентября 2011

enter image description here

это работает

 declare @from datetime

 SET @from =CONVERT(DATETIME, '01/01/2000 12:00 pm') 

Проверено следующее.

  CREATE FUNCTION formatit(
      @fromtime VARCHAR(50) -- varchar
       )
    RETURNS DATETIME
    AS 
    BEGIN 
    DECLARE @from datetime
     IF (CHARINDEX('NOON',@fromtime,0)) = 0 
       SET @from = CONVERT(DATETIME, @fromtime) 
     ELSE
       SET @from =CONVERT(DATETIME, '01/01/2000 12pm') 
    RETURN(@from)
    END

 SELECT dbo.formatit('04/12/2011 NOON ')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...