FOMRAT SQL function


1. Usage of FORMAT to format order dates.

SQL Server Query 1

            
SELECT TOP 10 OrderID, OrderDate, /* Original date*/   
FORMAT(OrderDate, 'd') AS ShortDate_DefaultCulture, /* Short date pattern based on session culture */
FORMAT(OrderDate, 'd', 'en-US') AS ShortDate_US, /* Short date pattern (US) */
FORMAT(OrderDate, 'd', 'en-GB') AS ShortDate_UK, /* Short date pattern (UK) */
FORMAT(OrderDate, 'D', 'en-US') AS LongDate_US, /* Long date pattern (US) */
FORMAT(OrderDate, 'D', 'de-DE') AS LongDate_German, /* Long date pattern (German) */
FORMAT(OrderDate, 'yyyy-MM-dd') AS ISO_Format, /* Custom ISO-like format */
FORMAT(OrderDate, 'dd/MMM/yyyy', 'en-US') AS Custom_Format_US, /* Custom format (US English) */
FORMAT(OrderDate, 'MMMM dd, yyyy') AS Full_Month_Name, /* Custom format with full month name */
FORMAT(OrderDate, 'yyyy-MM-dd HH:mm:ss') AS DateTime_24hr /* Date and 24-hour time */
FROM Orders
ORDER BY OrderDate DESC;

Create SQL query with SqlQueryBuilder 1

            
var (sql1, parameters1) = new SqlQueryBuilder()  
.Select().Top(10)
.Column("OrderID", "OrderID")
.Column("OrderDate", "OrderDate")
.Column(new FORMAT(new Column("OrderDate"), "d"), "ShortDate_DefaultCulture")
.Column(new FORMAT(new Column("OrderDate"), "d", "en-US"), "ShortDate_US")
.Column(new FORMAT(new Column("OrderDate"), "d", "en-gb"), "ShortDate_UK")
.Column(new FORMAT(new Column("OrderDate"), "D", "en-US"), "LongDate_US")
.Column(new FORMAT(new Column("OrderDate"), "D", "de-de"), "LongDate_German")
.Column(new FORMAT(new Column("OrderDate"), "yyyy_MM_dd"), "ISO_Format")
.Column(new FORMAT(new Column("OrderDate"), "dd_MM_yyyy"), "Custom_Format_US")
.Column(new FORMAT(new Column("OrderDate"), "MMM_dd_yyyy"), "Full_Month_Name")
.Column(new FORMAT(new Column("OrderDate"), "yyyy_MM_dd_HH_mm_ss"), "DateTime_24hr")
.From("Orders")
.OrderBy(new OrderBy().SetColumnDescending("OrderDate"))
.Build();

Query build by SqlQueryBuilder 1

            
SELECT TOP 10 OrderID AS OrderID,
              OrderDate AS OrderDate,
              FORMAT(OrderDate, @pMAIN_2507200130334851080) AS ShortDate_DefaultCulture,
              FORMAT(OrderDate, @pMAIN_2507200130334851081, @pMAIN_2507200130334851082) AS ShortDate_US,
              FORMAT(OrderDate, @pMAIN_2507200130334851083, @pMAIN_2507200130334851084) AS ShortDate_UK,
              FORMAT(OrderDate, @pMAIN_2507200130334851085, @pMAIN_2507200130334851086) AS LongDate_US,
              FORMAT(OrderDate, @pMAIN_2507200130334851087, @pMAIN_2507200130334851088) AS LongDate_German,
              FORMAT(OrderDate, @pMAIN_2507200130334851089) AS ISO_Format,
              FORMAT(OrderDate, @pMAIN_250720013033485108_10) AS Custom_Format_US,
              FORMAT(OrderDate, @pMAIN_250720013033485108_11) AS Full_Month_Name,
              FORMAT(OrderDate, @pMAIN_250720013033485108_12) AS DateTime_24hr
FROM Orders
ORDER BY OrderDate DESC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507200130334851080 d
@pMAIN_2507200130334851081 d
@pMAIN_2507200130334851082 en-US
@pMAIN_2507200130334851083 d
@pMAIN_2507200130334851084 en-gb
@pMAIN_2507200130334851085 D
@pMAIN_2507200130334851086 en-US
@pMAIN_2507200130334851087 D
@pMAIN_2507200130334851088 de-de
@pMAIN_2507200130334851089 yyyy_MM_dd
@pMAIN_250720013033485108_10 dd_MM_yyyy
@pMAIN_250720013033485108_11 MMM_dd_yyyy
@pMAIN_250720013033485108_12 yyyy_MM_dd_HH_mm_ss

Query Results 1:

  OrderID OrderDate ShortDate_DefaultCulture ShortDate_US ShortDate_UK LongDate_US LongDate_German ISO_Format Custom_Format_US Full_Month_Name DateTime_24hr
1 11077 5/6/1998 12:00:00 AM 5/6/1998 5/6/1998 06/05/1998 Wednesday, May 6, 1998 Mittwoch, 6. Mai 1998 1998_05_06 06_05_1998 May_06_1998 1998_05_06_00_00_00
2 11076 5/6/1998 12:00:00 AM 5/6/1998 5/6/1998 06/05/1998 Wednesday, May 6, 1998 Mittwoch, 6. Mai 1998 1998_05_06 06_05_1998 May_06_1998 1998_05_06_00_00_00
3 11075 5/6/1998 12:00:00 AM 5/6/1998 5/6/1998 06/05/1998 Wednesday, May 6, 1998 Mittwoch, 6. Mai 1998 1998_05_06 06_05_1998 May_06_1998 1998_05_06_00_00_00
4 11074 5/6/1998 12:00:00 AM 5/6/1998 5/6/1998 06/05/1998 Wednesday, May 6, 1998 Mittwoch, 6. Mai 1998 1998_05_06 06_05_1998 May_06_1998 1998_05_06_00_00_00
5 11073 5/5/1998 12:00:00 AM 5/5/1998 5/5/1998 05/05/1998 Tuesday, May 5, 1998 Dienstag, 5. Mai 1998 1998_05_05 05_05_1998 May_05_1998 1998_05_05_00_00_00
6 11072 5/5/1998 12:00:00 AM 5/5/1998 5/5/1998 05/05/1998 Tuesday, May 5, 1998 Dienstag, 5. Mai 1998 1998_05_05 05_05_1998 May_05_1998 1998_05_05_00_00_00
7 11071 5/5/1998 12:00:00 AM 5/5/1998 5/5/1998 05/05/1998 Tuesday, May 5, 1998 Dienstag, 5. Mai 1998 1998_05_05 05_05_1998 May_05_1998 1998_05_05_00_00_00
8 11070 5/5/1998 12:00:00 AM 5/5/1998 5/5/1998 05/05/1998 Tuesday, May 5, 1998 Dienstag, 5. Mai 1998 1998_05_05 05_05_1998 May_05_1998 1998_05_05_00_00_00
9 11069 5/4/1998 12:00:00 AM 5/4/1998 5/4/1998 04/05/1998 Monday, May 4, 1998 Montag, 4. Mai 1998 1998_05_04 04_05_1998 May_04_1998 1998_05_04_00_00_00
10 11068 5/4/1998 12:00:00 AM 5/4/1998 5/4/1998 04/05/1998 Monday, May 4, 1998 Montag, 4. Mai 1998 1998_05_04 04_05_1998 May_04_1998 1998_05_04_00_00_00


2. Usage of FORMAT to show different currencies.

SQL Server Query 2

            
SELECT TOP 15  
od.OrderID,
p.ProductName,
od.UnitPrice AS OriginalUnitPrice,
od.Quantity,
(od.UnitPrice * od.Quantity * (1 - od.Discount)) AS CalculatedTotalPrice,
/* Formatting UnitPrice as Currency */
FORMAT(od.UnitPrice, 'C') AS Currency_DefaultCulture, /* Currency based on session culture */
FORMAT(od.UnitPrice, 'C', 'en-US') AS Currency_USD, /* US Dollar format */
FORMAT(od.UnitPrice, 'C', 'de-DE') AS Currency_EUR, /* Euro format (German culture) */
FORMAT(od.UnitPrice, 'C', 'ja-JP') AS Currency_JPY, /* Yen format (Japanese culture) */
FORMAT(od.UnitPrice, 'C', 'en-IN') AS Currency_INR, /* Indian Rupee format */
/* Formatting Calculated Total Price as Number */
FORMAT((od.UnitPrice * od.Quantity * (1 - od.Discount)), 'N2', 'en-US') AS TotalPrice_N2_US, /* Number with 2 decimal places (US) */
/* Formatting Discount as Percentage */
FORMAT(od.Discount, 'P1') AS Discount_Percentage /* Percentage format with 1 decimal place */
FROM [Order Details] od
JOIN Products p ON od.ProductID = p.ProductID
WHERE od.Discount > 0 /* Let's find orders with discounts */
ORDER BY
CalculatedTotalPrice DESC;

Create SQL query with SqlQueryBuilder 2

            
var (sql2, parameters2) = new SqlQueryBuilder()  
.Select().Top(15)
.Column("od.OrderID", "OrderID")
.Column("p.ProductName", "ProductName")
.Column("od.UnitPrice", "OriginalUnitPrice")
.Column("od.Quantity", "Quantity")
.Column(new ColumnArithmatic().StartBracket().Column("od.UnitPrice")
.MULTIPLY().Column("od.Quantity").MULTIPLY().StartBracket()
.Value(1).SUBTRACT().Column("od.Discount").EndBracket().EndBracket(), "CalculatedTotalPrice")
.Column(new FORMAT(new Column("od.UnitPrice"), "c"), "Currency_DefaultCulture")
.Column(new FORMAT(new Column("od.UnitPrice"), "c", "en-US"), "Currency_USD")
.Column(new FORMAT(new Column("od.UnitPrice"), "c", "de-de"), "Currency_EUR")
.Column(new FORMAT(new Column("od.UnitPrice"), "c", "ja-JP"), "Currency_JPY")
.Column(new FORMAT(new Column("od.UnitPrice"), "c", "hi-in"), "Currency_INR")
.Column(new FORMAT(new ColumnArithmatic()
.StartBracket()
.Column("od.UnitPrice").MULTIPLY().Column("od.Quantity").MULTIPLY()
.StartBracket()
.Value(1).SUBTRACT().Column("od.Discount")
.EndBracket()
.EndBracket(), "N2", "en-US"), "TotalPrice_N2_US")
.Column(new FORMAT(new Column("od.Discount"), "P1"), "Discount_Percentage")
.From("[Order Details]", "od")
.Join(new List<IJoin>()
{
new Join(SQLJoin.INNERJOIN).TableName(new Table("Products", "p"))
.On(new Column("od.ProductID"), SQLComparisonOperators.EQUALE_TO, new Column("p.ProductID"))
})
.Where(new Where(new Column("od.Discount"), SQLComparisonOperators.GREATER_THAN, 0))
.OrderBy(new OrderBy().SetColumnDescending("CalculatedTotalPrice"))
.Build();

Query build by SqlQueryBuilder 2

            
SELECT TOP 15 od.OrderID AS OrderID,
              p.ProductName AS ProductName,
              od.UnitPrice AS OriginalUnitPrice,
              od.Quantity AS Quantity,
              (od.UnitPrice * od.Quantity * (@pMAIN_2507200130334989310 - od.Discount)) AS CalculatedTotalPrice,
              FORMAT(od.UnitPrice, @pMAIN_2507200130334989311) AS Currency_DefaultCulture,
              FORMAT(od.UnitPrice, @pMAIN_2507200130334989312, @pMAIN_2507200130334989313) AS Currency_USD,
              FORMAT(od.UnitPrice, @pMAIN_2507200130334989314, @pMAIN_2507200130334989315) AS Currency_EUR,
              FORMAT(od.UnitPrice, @pMAIN_2507200130334989316, @pMAIN_2507200130334989317) AS Currency_JPY,
              FORMAT(od.UnitPrice, @pMAIN_2507200130334989318, @pMAIN_2507200130334989319) AS Currency_INR,
              FORMAT((od.UnitPrice * od.Quantity * (@pMAIN_250720013033498931_10 - od.Discount)), @pMAIN_250720013033498931_11, @pMAIN_250720013033498931_12) AS TotalPrice_N2_US,
              FORMAT(od.Discount, @pMAIN_250720013033498931_13) AS Discount_Percentage
FROM [Order Details] AS od
     INNER JOIN
     Products AS p
     ON od.ProductID = p.ProductID
WHERE od.Discount > @pMAIN_250720013033498931_14
ORDER BY CalculatedTotalPrice DESC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507200130334989310 1
@pMAIN_2507200130334989311 c
@pMAIN_2507200130334989312 c
@pMAIN_2507200130334989313 en-US
@pMAIN_2507200130334989314 c
@pMAIN_2507200130334989315 de-de
@pMAIN_2507200130334989316 c
@pMAIN_2507200130334989317 ja-JP
@pMAIN_2507200130334989318 c
@pMAIN_2507200130334989319 hi-in
@pMAIN_250720013033498931_10 1
@pMAIN_250720013033498931_11 N2
@pMAIN_250720013033498931_12 en-US
@pMAIN_250720013033498931_13 P1
@pMAIN_250720013033498931_14 0

Query Results 2:

  OrderID ProductName OriginalUnitPrice Quantity CalculatedTotalPrice Currency_DefaultCulture Currency_USD Currency_EUR Currency_JPY Currency_INR TotalPrice_N2_US Discount_Percentage
1 10865 Côte de Blaye 263.5000 60 15019.5 $263.50 $263.50 263,50 € ¥264 ₹263.50 15019.50 5.0%
2 10353 Côte de Blaye 210.8000 50 8432 $210.80 $210.80 210,80 € ¥211 ₹210.80 8432.00 20.0%
3 10424 Côte de Blaye 210.8000 49 8263.36 $210.80 $210.80 210,80 € ¥211 ₹210.80 8263.36 20.0%
4 10816 Côte de Blaye 263.5000 30 7509.75 $263.50 $263.50 263,50 € ¥264 ₹263.50 7509.75 5.0%
5 10372 Côte de Blaye 210.8000 40 6324 $210.80 $210.80 210,80 € ¥211 ₹210.80 6324.00 25.0%
6 10776 Manjimup Dried Apples 53.0000 120 6042 $53.00 $53.00 53,00 € ¥53 ₹53.00 6042.00 5.0%
7 10912 Thüringer Rostbratwurst 123.7900 60 5570.55 $123.79 $123.79 123,79 € ¥124 ₹123.79 5570.55 25.0%
8 11030 Thüringer Rostbratwurst 123.7900 60 5570.55 $123.79 $123.79 123,79 € ¥124 ₹123.79 5570.55 25.0%
9 10993 Thüringer Rostbratwurst 123.7900 50 4642.125 $123.79 $123.79 123,79 € ¥124 ₹123.79 4642.13 25.0%
10 11030 Raclette Courdavault 55.0000 100 4125 $55.00 $55.00 55,00 € ¥55 ₹55.00 4125.00 25.0%
11 10329 Côte de Blaye 210.8000 20 4005.2 $210.80 $210.80 210,80 € ¥211 ₹210.80 4005.20 5.0%
12 10351 Côte de Blaye 210.8000 20 4005.2 $210.80 $210.80 210,80 € ¥211 ₹210.80 4005.20 5.0%
13 10953 Sir Rodney's Marmalade 81.0000 50 3847.5 $81.00 $81.00 81,00 € ¥81 ₹81.00 3847.50 5.0%
14 10616 Côte de Blaye 263.5000 15 3754.875 $263.50 $263.50 263,50 € ¥264 ₹263.50 3754.88 5.0%
15 10687 Mishi Kobe Niku 97.0000 50 3637.5 $97.00 $97.00 97,00 € ¥97 ₹97.00 3637.50 25.0%