TSQL: format date with date & hour? - tsql

In TSQL, I have a datetime variable that I want to display/group by:
YYYY-MM-DD HH
CONVERT() seems to be able to pull out date formats, but only predefined ones and not something like MySQL's DATE_FORMAT which allows me to customize the format.
What function in TSQL lets me customize the date format?

Try this (replace Getdate() function with your column name):
SELECT CONVERT(VARCHAR(13), GETDATE(), 120)

Are you using SQL Server 2012 or later? If so you should be able to use the built-in FORMAT function.

Related

Date formatting in postgresql from existing data

I've date in dd-mm-yyyy format, I need the date in yyyy-mm(month) format. I'm using postgresql.
Thanks in advance.
date values don't have any format. Any formatting you see is applied by your SQL client. To turn a date into a string with a specific format, you can use to_char()
to_char(the_column, 'yyyy-mm')

T-SQL using date format accounting the format of sql server

I have the following query:
Select dateadd(HOUR, 24, '2018/10/15 00:00:00')
This works on my local SQL Server, but fails on SQL-Express due to the time format, which is the italian date format.
So I should write:
Select dateadd(HOUR, 24, '15/10/2018 00:00:00')
How to account for the difference in date format of the two servers.
I would like my query to run on both. Which syntax should I use?
When using string literals as date, time, datetime or datetime2 values, always use ISO8601 format, since SQL Server will always convert it correctly to the appropriate data type.
For date only, use yyyy-mm-dd (2018-10-15)
For time only, use hh:mm:ss (24 hours) (17:33:25)
For Date + time, use yyyy-mm-ddThh:mm:ss again, (24 hours) (2018-10-15T17:33:25)
I suggest you another approach, that may be helpful whenever your chances to standardize the input are limited: beside any specific culture on SQL Server, you can set a command-wide date format that applies only to subsequent commands, using SET DATEFORMAT.
Eg.
SET DATEFORMAT ymd;
Select dateadd(HOUR, 24, '2018/10/15 00:00:00')
SET DATEFORMAT dmy;
Select dateadd(HOUR, 24, '15/10/2018 00:00:00')
You can use different formats by switching y (year), m (month) and d (day) characters.
Reference: SET DATEFORMAT

Custom date format iseries access odbc for SSRS

How to resolve my issue below?
1. I am pulling data from AS/400 DB2 using (iseries access odbc driver) to SSRS.
2. I want to format the column stores in integer to date format.
Sample = 20180612 below is the SQL Query.
Using below query,
SELECT CHAR(DATE(SUBSTR(DIGITS(20180612),1,4)||'-'||
SUBSTR(DIGITS(20180612),5,2)||'-'||
SUBSTR(DIGITS(20180612),7,2)),ISO) AS RESULTSDATE
Output = 2018-06-02
Question: How can I produce a below custom date format like d/m/yyyy
I have used, ISO, USA, LOCAL, JIS, EUR but no yield.
Example: 2/6/2018
If you want to do it in SQL Server, the closest you can CONVERT it to is the USA 110 (mm-dd-yyyy) in SQL Server.
If the your dataset has a field with the 2018-06-02, you can use the CDATE function is SSRS to convert it to a date and then format the text box the way you want with the FORMAT property or the FORMAT function.
Format Function:
=FORMAT(CDATE("2018-06-02"), "M/d/yyyy")
Format Property of Text Box:
/* this is as close as I can come to the desired results there is a leading zero */
select
varchar_format(
timestamp_format(char(20180612), 'YYYYMMDD')
, 'DD/MM/YYYY') as resultdate
from my8digitdatetable
/* for export IRL send out a date */
select
cast(
timestamp_format(char(20180612), 'YYYYMMDD')
as date) as resultdate
from my8digitdatetable
I got it already. I just format it to the date without formatting.
SELECT DATE(SUBSTR(DIGITS(MIN(DTAHRS.HREMCP.EMREDT)),1,4)||'-'||
SUBSTR(DIGITS(MIN(DTAHRS.HREMCP.EMREDT)),5,2)||'-'||
SUBSTR(DIGITS(MIN(DTAHRS.HREMCP.EMREDT)),7,2)) AS RESULTSDATE
After that, I put this as sub-query so that I can pass this to the parameter.
Below is my whole query, then at SSRS I can use date/time parameter control to compare with the results.
SELECT x.RESULTSDATE
FROM ( SELECT DATE(SUBSTR(DIGITS(MIN(DTAHRS.HRLVTP.LTLDTE)),1,4)||'-'||
SUBSTR(DIGITS(MIN(DTAHRS.HRLVTP.LTLDTE)),5,2)||'-'||
SUBSTR(DIGITS(MIN(DTAHRS.HRLVTP.LTLDTE)),7,2)) AS RESULTSDATE
) as x
WHERE x.RESULTSDATE >= ? AND x.RESULTSDATE <= ?
I hope it will help you too.

How to add only date like 'DD/MM/YYYY' to timestamp in PostgreSQL?

I'm trying to add only the current date in "DD/MM/YYYY" format in a field of type ' timestamp in PostgreSQL' .
I try:
select to_char(now(),'DD/MM/YYYY') as date;
But PostgreSQL return me:
TIP : You will need to rewrite the expression or apply a type conversion.
There is no such thing as "only the date" in a timestamp field. A timestamp field will store timestamps.
Try using the date type instead. Please read about this here.
Also, please consider using the ISO 8601 format instead. Getting used to it helps in a lot of cases.
Human-readable formats like "DD/MM/YYYY" should only be used for presentation.
If you want to use timestamp fields and insert a human-readable formatted dates, then you are looking for:
to_timestamp('05/04/2016', 'DD/MM/YYYY')
If it is about the current date, then Postgres provides the CURRENT_DATE function, which you may use:
SELECT CURRENT_DATE;
INSERT INTO t (timestamp_field) VALUES (CURRENT_DATE);

How to change the datetime format from yyyy-mm-dd to dd-mm-yyyy in sql servr

I am currently working with existing table.
I want change the datetime format
from
2014-03-06 00:00:00.000
to
06-03-2014 00:00:00.000
in table
Datetimes are stored without any particular format. The format is just applied when you display the data.
You can change the way you display a date in a particular query by using the CONVERT function:
SELECT GETDATE(), CONVERT(VARCHAR, GETDATE(), 105)
The question here, is why do you want to change it? Maybe its something your view should be doing instead.