Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल कन्वर्ट नवरचर (255) से डेटटाइम समस्या

उपयोग करने का प्रयास करें

CONVERT(datetime,OldDate ,103)

"103" कनवर्टर को बताता है कि प्रारूप dd/mm/yyyy . है

संपादित करें

यहाँ कई उदाहरणों के साथ एक अच्छा जैसा है:http://www.sqlusa.com/bestpractices/datetimeconversion /

ऐसा लगता है कि आपके पास m/d/y के साथ-साथ d/m/y डेटा है, यह आपके द्वारा किए जा सकने वाले सर्वोत्तम डेटा के बारे में है:

DECLARE @Table1 table (PK int, OldDate nvarchar(255) null)
DECLARE @Table2 table (PK int, NewDate datetime not null)
INSERT @Table1 VALUES (1,'26/07/03')
INSERT @Table1 VALUES (2,null)
INSERT @Table1 VALUES (3,null)
INSERT @Table1 VALUES (4,'23/07/2003')
INSERT @Table1 VALUES (5,'7/26/2003')
INSERT @Table1 VALUES (6,null)
INSERT @Table1 VALUES (7,'28/07/03')

SET DATEFORMAT dmy

INSERT INTO @Table2
        (PK, NewDate)
    SELECT
        PK,
        CASE 
            WHEN ISDATE(OldDate)=1 THEN OldDate
            ELSE '1/1/1900'
        END
        FROM @Table1

SET DATEFORMAT mdy

UPDATE t2
    SET NewDate=OldDate
    FROM @Table2           t2
        INNER JOIN @Table1 t1 ON t2.PK=t1.PK
    WHERE t2.NewDate='1/1/1900' AND ISDATE(OldDate)=1 

SELECT * FROM @Table2

आउटपुट:

PK          NewDate
----------- -----------------------
1           2003-07-26 00:00:00.000
2           1900-01-01 00:00:00.000
3           1900-01-01 00:00:00.000
4           2003-07-23 00:00:00.000
5           2003-07-26 00:00:00.000
6           1900-01-01 00:00:00.000
7           2003-07-28 00:00:00.000

(7 row(s) affected)

मैंने '1/1/1900' का उपयोग किया क्योंकि आपके पास न्यूडेट न्यूल नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में समय अंतर गणना

  2. Sp_executesql . में LIKE का उपयोग करना

  3. भू-स्थानिक सूचकांक को ठीक करना

  4. बीसीपी/बल्क इंसर्ट बनाम टेबल-वैल्यूड पैरामीटर्स का प्रदर्शन

  5. एसक्यूएल सर्वर क्वेरी में यूनियन सभी बनाम या स्थिति