Insert date only into database - sql

I am trying to save only date (ex: 2011/09/26 00:00:00) from getdate(). I am using sql server 2005.
My sql query is going to be like this:
Insert into Merchant(startdate)
values **today's date only**
How is it possible?

INSERT INTO Merchant
(startdate)
VALUES (DATEADD(DAY,0,DATEDIFF(DAY,0,GETDATE())))

select dateadd(dd,0, datediff(dd,0, GETDATE()))
However, if you move to SQL2008, I recommend changing your column to DATE instead of DATETIME.

I'm a little late to the party, but here are my 2 cents:
INSERT INTO Merchant
(startdate)
VALUES (cast(GETDATE() as Date))
That, of course, will only work from SQL Server 2008. I'll leave this answer, however, for learning purposes and future references.

You can try something like this:
EDIT - Revised to account for rounding after midday.
SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, GETDATE())))
Here's another apporoach you can try:
SELECT CAST(CONVERT(VARCHAR, GETDATE(), 101) AS DATETIME)

Related

How can I convert a datetime variable into a date and time separated variables?

I would like to Convert a DateTime variable into a date and time separated variable. I have tried with this SQL query but it doesn't work.
For SQL Server
select CAST(<your_date_time> AS DATE), CAST(<your_date_time> as TIME)
Assuming your database is sql server, and not mysql, you can get these 2 values with a query like this:
select
convert(date, dateTimeDepartureOutbound__c) as thedate,
convert(time, dateTimeDepartureOutbound__c) as thetime
from Order_DE
If you really were with mysql, one option could be this one:
select
date(dateTimeDepartureOutbound__c) as thedate,
time(dateTimeDepartureOutbound__c) as thetime
from Order_DE

SQL table column need to change datetime format to date

I have a column in a table with this format '2017-05-09 14:52:32.000' I would appreciate a way to convert it to a date format like MM/DD/YYYY
I have tried with:
select DATEADD(column, DATEDIFF(column, 0, getdate()), 0)
FROM table
but I get this error:
Column is not a recognized datediff option.
I've also tried another way and failed.
Please advise.
I'm assuming from the error message you reported that you're on SQL Server.
In SQL Server, the DATEADD and DATEDIFF functions take a "date part" as the first argument: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND or MILLISECOND:
SELECT DATEADD(DAY, DATEDIFF(DAY, [COLUMN], GETDATE()), [COLUMN])
FROM [TABLE]
might be want what you want.
However,
SELECT CONVERT(DATE, [COLUMN]) AS [COLUMNDATE]
Might be even easier.

How to format a date to "MM/dd"

So I currently have a field that is outputting dates as
03/26/14
This is a weird question, but is there anyway where I can have the date output without the year?
I would like the date to look like
03/26
Thanks!
If using SQL Server, you could:
SELECT CONVERT(VARCHAR(5), GETDATE(), 101)
Use this:
SELECT CONVERT(VARCHAR(5), GETDATE(), 03)

how to remove time from datetime

The field DATE in the database has the following format:
2012-11-12 00:00:00
I would like to remove the time from the date and return the date like this:
11/12/2012
First thing's first, if your dates are in varchar format change that, store dates as dates it will save you a lot of headaches and it is something that is best done sooner rather than later. The problem will only get worse.
Secondly, once you have a date DO NOT convert the date to a varchar! Keep it in date format and use formatting on the application side to get the required date format.
There are various methods to do this depending on your DBMS:
SQL-Server 2008 and later:
SELECT CAST(CURRENT_TIMESTAMP AS DATE)
SQL-Server 2005 and Earlier
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0)
SQLite
SELECT DATE(NOW())
Oracle
SELECT TRUNC(CURRENT_TIMESTAMP)
Postgresql
SELECT CURRENT_TIMESTAMP::DATE
If you need to use culture specific formatting in your report you can either explicitly state the format of the receiving text box (e.g. dd/MM/yyyy), or you can set the language so that it shows the relevant date format for that language.
Either way this is much better handled outside of SQL as converting to varchar within SQL will impact any sorting you may do in your report.
If you cannot/will not change the datatype to DATETIME, then still convert it to a date within SQL (e.g. CONVERT(DATETIME, yourField)) before sending to report services and handle it as described above.
just use, (in TSQL)
SELECT convert(varchar, columnName, 101)
in MySQL
SELECT DATE_FORMAT(columnName, '%m/%d/%Y')
I found this method to be quite useful. However it will convert your date/time format to just date but never the less it does the job for what I need it for. (I just needed to display the date on a report, the time was irrelevant).
CAST(start_date AS DATE)
UPDATE
(Bear in mind I'm a trainee ;))
I figured an easier way to do this IF YOU'RE USING SSRS.
It's easier to actually change the textbox properties where the field is located in the report. Right click field>Number>Date and select the appropriate format!
SELECT DATE('2012-11-12 00:00:00');
returns
2012-11-12
Personally, I'd return the full, native datetime value and format this in the client code.
That way, you can use the user's locale setting to give the correct meaning to that user.
"11/12" is ambiguous. Is it:
12th November
11th December
For more info refer this: SQL Server Date Formats
[MM/DD/YYYY]
SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 101) from tbl
[DD/MM/YYYY]
SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 103) from tbl
Live Demo
TSQL
SELECT CONVERT(DATE, GETDATE()) // 2019-09-19
SELECT CAST(GETDATE() AS DATE) // 2019-09-19
SELECT CONVERT(VARCHAR, GETDATE(), 23) // 2019-09-19
In mysql at least, you can use DATE(theDate).
You may try the following:
SELECT CONVERT(VARCHAR(10),yourdate,101);
or this:
select cast(floor(cast(urdate as float)) as datetime);
Use this SQL:
SELECT DATE_FORMAT(date_column_here,'%d/%m/%Y') FROM table_name;

Date without the time

I'm working with SQL Server 2005.
I have a column called purchase_time of type datetime. How do I select this column with the time part - just the date.
Thanks,
Barry
EDIT:
Would it be safe to get the datetime and split it via Python on the first space, or is this format locale dependant?
In versions < 2008 (which, based on other comments to some of the answers, I believe you are running), the most efficient way is to keep it as a datetime type and use date math to avoid string conversions.
SELECT DATEADD(DAY, DATEDIFF(DAY, '20000101', purchase_time), '20000101')
FROM dbo.table;
EDIT
If you want the date only for display purposes, not for calculations or grouping, that is probably best handled at the client. You can do it in SQL simply by saying:
SELECT dt = CONVERT(CHAR(10), purchase_time, 120)
FROM dbo.table;
In SQL Server 2008 you can use the newly added date type:
select convert(date, purchase_time) from TableName
Update:
In versions prior to SQL 2008, I used the following solution for this problem:
select convert(datetime, convert(int, convert(float, purchase_time)))
from TableName