sql >> Database >  >> RDS >> Sqlserver

Een datum-/tijdwaarde converteren naar een tekenreeks in SQL Server met CONVERT()

Wanneer u SQL Server gebruikt, kunt u een datum/tijd-waarde converteren naar een tekenreeks met behulp van de CONVERT() functie. Met deze functie kunt u tussen verschillende gegevenstypen converteren.

In dit artikel zullen we tussen verschillende datum/tijd-gegevenstypen converteren naar een varchar of nvarchar tekenreeks.

Een van de goede dingen van deze functie is dat je de stijl kunt specificeren waarin de datum wordt geretourneerd. Je kunt bijvoorbeeld specificeren of deze wordt geretourneerd als mm/dd/jjjj , jjjj.mm.dd , Ma dd, jjjj , enz. U kunt ook specificeren of de tijdcomponent wordt geretourneerd en hoe deze wordt gestyled.

Syntaxis

Ten eerste, hier is hoe de officiële syntaxis werkt:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Deze argumenten worden als volgt gedefinieerd:

expression
Elke geldige uitdrukking.
data_type
Het doelgegevenstype. Dit omvat xmlgroot , en sql_variant . Alias-gegevenstypen kunnen niet worden gebruikt.
length
Een optioneel geheel getal dat de lengte van het doelgegevenstype aangeeft. De standaardwaarde is 30 .
style
Een integer-expressie die specificeert hoe de CONVERT() functie vertaalt uitdrukking . Voor een stijlwaarde van NULL wordt NULL geretourneerd. data_type bepaalt het bereik.

Basisvoorbeeld

In dit voorbeeld declareren we een variabele en wijzen we een waarde toe uit de GETDATE() functie. We retourneren dan de waarde en we converteren die waarde ook naar varchar en geef dat terug:

DECLARE @date datetime = GETDATE();
SELECT
    @date AS Original,
    CONVERT(varchar, @date) AS Converted;

Resultaat:

+-------------------------+---------------------+
| Original                | Converted           |
|-------------------------+---------------------|
| 2018-06-07 03:08:21.997 | Jun  7 2018  3:08AM |
+-------------------------+---------------------+

De standaardlengte van het retourgegevenstype is 30 , dus ook al hebben we alleen varchar specified opgegeven , retourneert het het resultaat als een varchar(30) .

In dit voorbeeld hebben we geen derde argument gegeven om de stijl aan te geven waarin we het willen retourneren. Daarom is het geconverteerd met de standaardstijl voor datetime en smalldatetime gegevenstypen, dat is 0 of 100 (meer over stijlen hieronder).

Een stijl specificeren

U kunt een derde argument gebruiken om de stijl te specificeren die de retourwaarde zal aannemen:

DECLARE @date datetime = GETDATE();
SELECT
    @date AS Original,
    CONVERT(varchar(30), @date, 102) AS Converted;

Resultaat:

+-------------------------+-------------+
| Original                | Converted   |
|-------------------------+-------------|
| 2018-06-07 03:42:33.840 | 2018.06.07  |
+-------------------------+-------------+

In dit voorbeeld hebben we een stijl gespecificeerd van 102 , wat de ANSI-standaard is voor het weergeven van een datum met een jaarcomponent van vier cijfers.

Om dit te veranderen in een ANSI-formaat met een jaartal van twee cijfers, kunnen we een stijl van 2 gebruiken :

DECLARE @date datetime = GETDATE();
SELECT
    @date AS Original,
    CONVERT(varchar(30), @date, 2) AS Converted;

Resultaat:

+-------------------------+-------------+
| Original                | Converted   |
|-------------------------+-------------|
| 2018-06-07 03:44:52.433 | 18.06.07    |
+-------------------------+-------------+

U kunt meer voorbeelden zien op CONVERT() van Datum/Tijd naar Tekenreeksvoorbeelden in SQL Server.


  1. Welk objecttype voert de Spring Hibernate Template-methode uit voor een telquery op Oracle?

  2. ORACLE Een spoel gebruiken met dynamische spoellocatie

  3. Een tabelwaardeparameter doorgeven van C# naar Oracle opgeslagen procedure

  4. #1139 - Kreeg fout 'herhaling-operator operand ongeldig' van regexp