sql >> Database >  >> RDS >> Sqlserver

SQL Server datum Formaat gebruiker afhankelijk?

Als u datum/tijd moet specificeren met strings, moet u een veilige . gebruiken , taalonafhankelijk formaat.

In SQL Server is dat het ISO-8601-formaat (enigszins aangepast), en het ondersteunt in principe twee veilige formaten voor DATETIME die altijd werken - ongeacht uw instellingen voor taal, regio en datumnotatie:

YYYYMMDD              (e.g. 20121231  for 31st of December 2012)  if you need date only

YYYY-MM-DDTHH:mm:ss   (e.g. 2012-12-31T21:05:00 for 31st of December 2012, 9:05pm)

Opmerking:

  • de eerste notatie met alleen datum heeft geen streepjes of scheidingstekens!

  • het tweede formaat heeft streepjes voor de datum (kan ook worden weggelaten), en er is een vaste T als scheidingsteken tussen de datum en het tijdgedeelte van de tekenreeks

Bijwerken: volgens uw laatste opmerking (over de verschillende standaardtalen voor de twee gebruikers) - probeer dit:

-- this is how your `SA` interprets the string as datetime....
SET LANGUAGE english
SELECT CAST('2012-11-30 23:59' AS DATETIME)   

Werkt prima...

-- this is how your British user interprets teh string as datetime
SET LANGUAGE british
SELECT CAST('2012-11-30 23:59' AS DATETIME)

Dit probeert de string te interpreteren als 11e van de 30e maand van 2012 en natuurlijk mislukt dat....



  1. InnoDB dwingen buitenlandse sleutels op een tafel/tabellen opnieuw te controleren?

  2. Module-afhankelijkheden gebruiken, deel 2

  3. Gerangschikte zoekresultaten retourneren met behulp van gin-index met sqlalchemy

  4. afbeelding naar byte [] opslaan in Mysql met asp.net en c#